将信息从前台服务传递到活动

时间:2018-09-01 17:29:23

标签: java android service

我正在尝试在我的应用程序中实现服务,并将消息(如位图)从该服务发送到MainActivity。我已经实现了onStartCommand()函数并启动了服务。我注意到,当我关闭该应用程序时,该服务将继续(以通知的形式)。如果我按通知上的任何按钮,则呼叫将通过onStartCommand()函数进行转接。问题是该应用已关闭!在此阶段,有两种选择:

  • startActivity()开始活动-这将导致在MainActivity中调用onCreate函数,该函数将重新创建服务。解决方案:检查服务是否在线(涉及所有活动服务的非常不专业的循环)。问题:再次如何将信息从服务传递给此类(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?

0 个答案:

没有答案