【问题标题】:Android BroadcastReceiver Vs ServiceAndroid BroadcastReceiver 与服务
【发布时间】:2012-12-28 23:31:03
【问题描述】:

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

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

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

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

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

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

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

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

这就是我的时钟的样子:

【问题讨论】:

    标签: android


    【解决方案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

    【讨论】:

    • 那么,您对我的情况有何建议?接收方还是服务方?
    • 我会选择 AlarmManager 和 BroadcastReciever。您可以定义 AlarmManager 是否唤醒设备。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    相关资源
    最近更新 更多