繁体   English   中英

在启动和 PreferenceChange 时启动 Android 服务

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM