Передача информации из службы Foreground в деятельность - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь реализовать службу в своем приложении и отправлять сообщения (например, растровые изображения) из службы в 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...