如何通过通知栏从服务调用活动

GMG*_*GMG 3 android

这是我的样子

A1 =启动画面活动

A2 =主要活动

A3 =额外活动

S1 = GPS服务

我从A1开始,它创建了启动A2的意图,然后启动A1。在A2内创建并绑定S1(在S1内发出通知)

CharSequence text = getText(R.string.local_service_started);

Notification notification = new Notification(R.drawable.notify_icon, text, System.currentTimeMillis());

Intent i = new Intent();
i.setClassName("xxx.yyy.zzz.kkk", "xxx.yyy.zzz.kkk.A2");
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);

notification.setLatestEventInfo(this, getText(R.string.local_service_label), text, contentIntent);
mNM.notify(NOTIFICATION, notification);
Run Code Online (Sandbox Code Playgroud)

现在,我在通知栏中显示了我的图标如果我在A2活动中按HOME按钮并打开另一个应用程序,然后按我的通知图标,则所有按钮均正常运行,并且我将我的A2活动(A2是最活跃的活动)回退了,但是如果在A2内启动A3并返回HOME并按通知我有问题,则A2被创建为新实例(A2现在不是最重要的)!可以像长按HOME一样使效果集中在应用程序中的最后一个打开的活动上吗?我不想打开特定的活动,但是在没有新的活动实例的情况下将我暂停的活动放在前面。

GMG*_*GMG 5

我已经解决了,这打开了我的应用程序,保留了实际状态,并使打开的活动从背景中恢复到前列。对最近从RECENTS中选择应用进行同样的思考!

Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
i.setComponent(new ComponentName(getApplicationContext().getPackageName(), MyAppClass.class.getName()));
Run Code Online (Sandbox Code Playgroud)

MyAppClass是APK启动的第一个活动。

最好的祝福