#android #service #alarmmanager
#Android #Обслуживание #alarmmanager
Вопрос:
Как выглядит мой код сегодня, я периодически отправляю сигнал тревоги (?), используя AlarmManager
который принимается AlarmReceiver extends BroadcastReceiver
, который, в свою очередь, запускает службу. Служба выполняет некоторое обновление и заканчивается stopSelf()
. IMO это лучший способ периодически выполнять задачу без постоянного запуска службы. Правильно?
Однако проблема с этим кодом заключается в том, что инициируется вся цепочка событий onSharedPreferenceChanged()
. Я (изначально) подумал, что это хорошая идея, поскольку все обновления включены пользователем в SharedPreferences
. Теперь я пришел к выводу, что это на самом деле не очень хорошо и что мне нужно инициировать AlarmManager / AlarmReceiver / Service / что угодно, и то, и другое onPreferenceChange
, но также при загрузке.
Я провел некоторый поиск, но, похоже, все хотят запустить Службу при загрузке. На мой взгляд, мне просто нужно инициировать AlarmManager
, который затем запустит Службу (при необходимости и только периодически).
Пожалуйста, помогите мне, во-первых, разобраться с этим, а во-вторых, закодировать его! Заранее спасибо!
Ответ №1:
Затем создайте и зарегистрируйте, 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" />
Комментарии:
1. Спасибо! Как насчет моего текущего кода? Должен ли я оставить его себе? Мне кажется, что такой подход может привести к тому, что я в конечном итоге получу от alarmmanagers (каждый запускает сигналы тревоги в соответствии с заданным пользователем интервалом), заставляя обновление запускаться в два раза чаще, чем предполагалось …?