我正在尝试在我的应用程序中实现服务,并将消息(如位图)从该服务发送到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?