Могу ли я использовать AlarmManager с LocalBroadcastManager на Android?
У меня есть этот код:
private AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
private PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, new Intent("my action-name"), 0);
alarmManager.setInexactRepeating((int)AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + autoUpdateIntervalInMinutes * 60 * 1000, autoUpdateIntervalInMinutes * 60 * 1000, alarmIntent);
Но я хотел бы изменить это для LocalBroadcastManager. Возможно ли это?
Ответы
Ответ 1
Нет, это невозможно, потому что LocalBroadcastManager
предназначен только для вашего собственного процесса, а AlarmManager
работает в другом процессе. Вот почему нет способа создать PendingIntent
, который работает с LocalBroadcastManager
.
Ответ 2
Но вы можете зарегистрировать BroadcastReceiver, который в основном преобразует "Глобальную" трансляцию в LocalBroadcast:
public class AutoUpdateBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = AutoUpdateBroadcastReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, ".onReceive");
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(context);
lbm.sendBroadcast(intent);
}
}