0

我有一个alarm(repeatingalarm)和BroadcastReceiver来处理它。该警报设置在我的activity中,其等待意图参考BroadcastReceiver类。我的活动中有一个sqlite数据库。我想在我的警报中更新我的sqlite数据库,所以我需要从我的活动sqlite对象。这也是我的asynctask也需要我的警报执行。我怎样才能做到这一点? 简而言之,我想将我的活动对象传递给我的广播构造函数,以便我可以使用我的sqlite实例。如何通过意图传递一个对象

编辑:我注意到,如果我在我的活动中定义了BroadcastReciever,我可以参考它,就像MyActivity.this一样简单。有没有其他办法,而不是这个。

+0

你不能在'broadcastreceiver'中做太多的工作。 –

+0

定义我的活动中的所有类。我可以从他们访问我的活动类对象吗? –

+0

是的,您可以从任何类中调用任何方法接受其不更新和UI组件,并且必须从您的调用方传递应用程序上下文,并且可以像任何非Activity类一样使用任何方法。 –

回答

1

你不能在'broadcastreceiver'中做太多的工作。

打算您必须创建一个服务类来执行此操作并从“broadcastreceiver”调用服务。然后在Service中写入您的DataBase代码。

在服务中,您可以通过getApplicationConext()创建'sqlite'DataBase对象。

此外,在服务内部必须为您的工作创建分离线程或使用AsyncTask来执行您的数据库操作。

+0

我需要重复报警,所以我需要broadcastreceiver没有服务。 –

+1

是的你是广播接收机的权利,但广播接收机有限的时间做你的工作,最好的办法是,你从广播接收机打电话服务,然后你的服务内的任务, –

+0

服务可以只是一个方式来激励/发射broadcastrceiver。 –