Как передать данные в действие, начатое службой - PullRequest
1 голос
/ 04 ноября 2011

Мне нужно разработать приложение, которое выдает всплывающее сообщение в определенное время, установленное пользователем.

Я буду использовать Android AlarmManager, который запускает службу, и эта служба запускает действиесодержащий всплывающий интерфейс с кнопкой ОК.

Я хочу передать данные в это действие, как это можно сделать (в противном случае мне придется запросить базу данных)?

  • Какпередать данные из действия в службу при настройке времени запуска с помощью AlarmManager?
  • Как впоследствии передать эти данные в действие, запущенное службой?

Также, еслислужба запускает действие в моем приложении (не основное действие), а функции-обработчики базы данных находятся в отдельном классе, доступна ли база данных?

1 Ответ

3 голосов
/ 04 ноября 2011

Когда вы передаете объект PendingIntent методу AlarmManager.set, вы можете поместить любые дополнительные элементы в объект Intent, завернутые в ожидающий объект. Например:

Intent intent = new Intent(getApplicationContext(), YourService.class);
intent.putExtra("someKey", someData);
intent.putExtra("anotherKey", anotherData);
PendingIntent pi = PendingIntent.getService(getApplicationContext(), REQUEST_CODE, intent, FLAGS);
alarmManager.set....

И затем, когда служба запускается, вы получаете тот же объект намерения:

public void onStartCommand(Intent data, int startId, int flags) {
    int data1 = data.getExtra("someKey");
}

И вы можете сделать то же самое, запустив действие из своего сервиса:

Intent activityIntent = new Intent(getApplicationContext(), YourActivity.class);
intent.putExtra("key", data1);

На самом деле, если вы не делаете ничего особенного в своем сервисе, а запускаете действие, почему бы вам просто не установить намерение для действия в своем тревоге?

...