Вы должны добавить запись разрешения манифеста:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
(конечно, вы должны перечислить все другие разрешения, которые использует ваше приложение).
Затем реализуйте класс BroadcastReceiver, он должен быть простым и быстрым для выполнения. Наилучший подход состоит в том, чтобы установить в этом приемнике будильник, чтобы разбудить вашу службу (если нет необходимости держать его включенным в течение времени, как писал Прахаст).
public class BootUpReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyService.class), PendingIntent.FLAG_UPDATE_CURRENT);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi);
}}
Затем добавьте класс Receiver в ваш файл манифеста:
<receiver android:enabled="true" android:name=".receivers.BootUpReceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>