在启动和PreferenceChange上启动Android服务

时间:2011-04-29 20:18:53

标签: android service alarmmanager

正如我今天的代码所示,我定期使用由AlarmManager收到的AlarmReceiver extends BroadcastReceiver发送警报(?),然后stopSelf()启动服务。服务会进行一些更新,并以onSharedPreferenceChanged()结束。 IMO这是定期执行任务而不必不断运行服务的最佳方式。正确的吗?

然而,此代码的问题是整个事件链已启动SharedPreferences。我(最初)认为这是一个好主意,因为onPreferenceChange中的用户启用了整个更新。 我现在得出的结论是,这实际上并不是很好,我需要启动AlarmManager / AlarmReceiver / Service /以及AlarmManager和启动时的任何内容。

我已经做了一些搜索但是每个人似乎都希望在启动时启动服务。在我看来,我只需要启动{{1}}然后启动服务(需要时,只定期)。

请帮助我,首先,对其进行排序,然后对其进行编码! 提前谢谢!

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" />