Могу ли я использовать 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. Это возможно?

2 ответа

Решение

Нет, это невозможно, потому что LocalBroadcastManager только для вашего собственного процесса, и AlarmManagerБэкэнд работает в другом процессе. Вот почему нет способа создать PendingIntent это работает с LocalBroadcastManager,

Но вы можете зарегистрировать 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);
  }
}
Другие вопросы по тегам