[英]Starting Android Service on boot and PreferenceChange
正如我今天的代码所示,我使用AlarmManager
接收的AlarmReceiver extends BroadcastReceiver
进而启动服务。 服务进行一些更新并以stopSelf()
结束。 IMO 这是定期执行任务而无需不断运行服务的最佳方式。 正确的?
然而,这段代码的问题是整个事件链都是由onSharedPreferenceChanged()
启动的。 我(最初)认为这是一个好主意,因为整个更新都是由用户在SharedPreferences
中启用的。 我现在得出的结论是,这实际上不是很好,我需要在 onPreferenceChange 和启动时启动 AlarmManager/ onPreferenceChange
/Service/whatever。
我做了一些搜索,但每个人似乎都想在启动时启动服务。 正如我所看到的,我只需要启动AlarmManager
,然后它会启动服务(在需要时并且仅定期启动)。
请先帮我整理一下,然后再编码! 提前致谢!
然后,创建并注册一个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" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.