正如我今天的代码所示,我定期使用由AlarmManager
收到的AlarmReceiver extends BroadcastReceiver
发送警报(?),然后stopSelf()
启动服务。服务会进行一些更新,并以onSharedPreferenceChanged()
结束。 IMO这是定期执行任务而不必不断运行服务的最佳方式。正确的吗?
然而,此代码的问题是整个事件链已启动SharedPreferences
。我(最初)认为这是一个好主意,因为onPreferenceChange
中的用户启用了整个更新。
我现在得出的结论是,这实际上并不是很好,我需要启动AlarmManager / AlarmReceiver / Service /以及AlarmManager
和启动时的任何内容。
我已经做了一些搜索但是每个人似乎都希望在启动时启动服务。在我看来,我只需要启动{{1}}然后启动服务(需要时,只定期)。
请帮助我,首先,对其进行排序,然后对其进行编码! 提前谢谢!
答案 0 :(得分:3)
然后,创建并注册BroadcastReceiver
,您将执行AlarmManager
内容:
public class YourBootReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// do the AlarmManager here
}
}
然后,在你的清单上:
<application>
... other stuff
<receiver android:name=".YourBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />