2012-12-28 50 views
1

我正在使用画布和ImageView编写自定义模拟时钟应用窗口小部件。Android BroadcastReceiver与服务

我在小部件提供程序的onEnabled事件的每分钟顶部设置了一个报警。该警报呼叫负责绘制时钟的BroadcastReceiver。

我虽然保存位图到某一点,所以减少了绘图时间。但是,一旦onUpdate返回,BroadcastReceiver就会死亡,所以我无法在其中保存位图。

首先我想知道是否有在BroadcastReceiver中保存的东西?

我虽然使用服务,而不是BroadcastReceiver,因为他们不会终止。但不知何故,我不知道这是否有益呢?

我有关于服务的一些普遍问题:

  1. 我读的地方,一个服务可以通过Android系统被杀?如果 就是这样,AlarmManager是否再次启动它?

  2. 我不想唤醒设备来更新时钟,因为它不是 不重要,只要设备 处于打开状态,它就可以更新得非常快。我在某处读到服务在后台运行。 使用服务并使用AlarmManager调用它让设备到 睡眠?

这是我的时钟的样子:

enter image description here

回答

1

如果你想保存的东西,而在broadcastreciever,您可以使用sharedprefrences或sqllite或取决于你的文件需要,并恢复它下一次。 关于存储: http://developer.android.com/guide/topics/data/data-storage.html

Broadcastreceivers在需要的时候运行,不需要时不占用系统资源。如果您需要等待随机事件(例如传入短信)或长时间后台处理(广播回忆者被杀),则可以使用服务。

服务确实被android系统杀死,取决于系统是否自己恢复服务。 此行为基于PLC控制的,其看重的是onStartCommand函数返回: START_STICKY - 意图重新启动服务=零 START_NOT_STICKY - 不要重新启动服务

,你可以在这里阅读有关的其他选项:所以 http://developer.android.com/reference/android/app/Service.html#START_STICKY

+0

,在我的情况下,你的建议是什么?接收者或服务? – Ali

+0

我会用AlarmManager和BroadcastReciever去。您可以定义AlarmManager是否唤醒设备。 – Raanan

相关问题