Я пытаюсь реализовать службу в своем приложении и отправлять сообщения (например, растровые изображения) из службы в MainActivity. Я реализовал функцию onStartCommand()
и запустил сервис. Я заметил, что, когда я закрываю приложение, служба продолжается (в форме уведомления). Если я нажимаю любую из кнопок в уведомлении, то вызов передается через функцию onStartCommand()
. Проблема в том, что приложение закрыто! На этом этапе есть несколько вариантов:
начать действие с startActivity()
- это приведет к вызову функции onCreate в MainActivity, которая будет воссоздавать службу. Решение: проверить, работает ли сервис онлайн (включает в себя очень непрофессиональный цикл всех активных сервисов). Проблема: опять же, как я могу передать информацию из сервиса в этот класс (в функции onCreate()
есть параметр Bundle, возможно, я смогу использовать это ... но как)?
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("", "In command");
if(intent.getAction().equals("start")){
createNotif();//notif+startForeground
}else if(intent.getAction().equals("next")){
Intent dialogIntent = new Intent(this, MainActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);//pass data?
}
return START_STICKY;
}
вместо использования PendingIntent btnNext=PendingIntent.getService(this,0, btnNextIntent, 0);
используйте PendingIntent pNext=PendingIntent.getActivity(this,0, btnNextIntent, 0);
, который будет непосредственно запускать действие (с классом компонента, установленным в MainActivity). Как я могу использовать проходные значения с этим методом?
//Next button
Intent nextIntent = new Intent(this, BackgroundService.class);
nextIntent.setAction("next");
PendingIntent pNext=PendingIntent.getService(this,0, nextIntent, 0);//when button pressed the call is passed to onStartCommand()
VS
//Next button
Intent nextIntent = new Intent(this, MainActivity.class);
nextIntent.setAction("next");
PendingIntent pNext=PendingIntent.getActivity(this,0, nextIntent, 0);//when button pressed a new MainActivity instance is created...how can pass data to it?
Как я могу передать растровое изображение (например) из службы переднего плана в MainActivity?