Я хотел бы, чтобы служба запускалась при загрузке, а затем запускалась каждые 10 минут.
Любые идеи, как я об этом говорю?
Если при загрузке я могу заставить расписание на 10 минут, но я полагаю, мне нужно будет планировать это каждый раз при загрузке, потому что после перезагрузки все расписания будут потеряны?
Любая помощь действительно ценится
благодаря
Там хороший маленький учебник здесь, что объясняет, как запустить службу во время загрузки, который просто продолжают работать и в какой - то очередной интервал делает что - то (записывает в лог - файл, в случае учебника).
Как указывает @CommonsWare, это создает ненужную нагрузку на систему. Лучшим подходом является планирование повторяющегося сигнала тревоги с помощью AlarmManager, как описано в этом потоке. Вы можете зарегистрировать свое приложение, чтобы получать широковещательную передачу BOOT_COMPLETED (как описано в предыдущем учебнике), а в расписании ответа - тревогу.
AlarmManager
для этого.
в моем приложении я зарегистрировал широковещательный приемник по ACTION_BOOT_COMPLETED Intent для получения уведомления о завершении загрузки устройства. Чтобы достичь результата, вы должны указать в своем файле манифеста следующее:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
...
<receiver
android:name=".YOUR_BROADCAST_RECEIVER">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
В BroadcastReceiver я начал службу с
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, serviceClass));
...
}
Наконец, в onStartCommand службы
public int onStartCommand(Intent intent, int flags, int startId) {
...
setNextSchedule();
...
}
private void setNextSchedule() {
long time = WHEN_YOU WANT_THE SERVICE TO BE SCHEDULED AGAIN;
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getService(this, 0,new Intent(this, this.getClass()), PendingIntent.FLAG_ONE_SHOT);
am.set(AlarmManager.RTC_WAKEUP, time, pi);
}
AlarmManger будет использовать ожидающее намерение отправить на ваш сервис намерение, которое вы передали. Посмотрите здесь
пока
AlarmManager
при первом запуске приложения после установки и при перезагрузке. Вы также можете захотеть иметь несколько смарт-карт для перепланирования сигналов тревоги, если вы определите, когда ваше приложение запускается вручную, что сигнал тревоги не запустился слишком долго (например, пользователь нажал Force Stop в настройках вашего приложения).