1

我正在使用画布和 ImageView 编写自定义模拟时钟应用程序小部件。

我在小部件提供程序的 onEnabled 事件中每分钟设置一个警报。闹钟调用负责绘制时钟的 BroadcastReceiver。

我想将位图保存到某个点,所以减少绘图时间。但是,一旦 onUpdate 返回,BroadcastReceiver 就会死掉,所以我不能将位图保留在其中。

首先我想知道有没有办法在 BroadcastReceiver 中保存一些东西?

我虽然使用服务而不是广播接收器,因为它们不会被终止。但不知何故我不知道这是否有好处?

我有一些关于服务的一般性问题:

  1. 我在某处读到服务可能会被android系统杀死?如果是这样,AlarmManager 会重新启动它吗?

  2. 我不想唤醒设备来更新时钟,因为它并不重要,只要设备一开机就可以很快更新。我在某处读到该服务在后台运行。使用服务并使用 AlarmManager 调用它会让设备进入睡眠状态吗?

这就是我的时钟的样子:

在此处输入图像描述

4

1 回答 1

1

如果你想在广播接收器中保存一些东西,你可以根据需要使用 sharedprefrences 或 sqllite 或文件,并在下次恢复它。关于存储:http: //developer.android.com/guide/topics/data/data-storage.html

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

服务确实会被android系统杀死,并且取决于它自己的服务,它们是否由系统恢复。此行为由 onStartCommand 函数返回的值控制: START_STICKY - 意图重启服务 = null START_NOT_STICKY - 不重启服务

您可以在此处阅读其他选项:http: //developer.android.com/reference/android/app/Service.html#START_STICKY

于 2012-12-28T15:31:03.013 回答