我有一个带标签和通知栏条目的应用, 当我把它发送到后台(点击主页按钮) 并尝试通过单击重新打开应用程序 通知栏,应用程序重新启动(最后选择 标签丢失了。)
如果应用程序在,我按住主页按钮 背景并从那里选择它或点击 主屏幕上的应用程序图标,以前的状态是 默认情况下恢复(选择了正确的选项卡)
IMO通知的意图是错误的,但我是 不知道如何解决它。
简而言之:如何获取后台应用程序 单击通知条目时的前景?
THX!
答案 0 :(得分:8)
把这两行。这将恢复当前暂停的活动:
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
答案 1 :(得分:4)
Intent intent = new Intent(Application.getContext(), ActivityHome.class);
intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
Application.getContext().startActivity(intent);
答案 2 :(得分:2)
我遇到了同样的问题,并且急切地寻找答案,但这里的诀窍是:使用通知意图并使用通知意图在onCreate中打开一个空白活动,而不是尝试使用保存状态重新启动应用程序( )活动的方法,只需完成()它。这会将您带回到应用上最后一次查看的活动。
答案 3 :(得分:1)
public static boolean isApplicationRunningBackground(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(am.getRunningAppProcesses().size());
for (RunningTaskInfo runningTaskInfo : tasks) {
if (runningTaskInfo.topActivity.getPackageName().equals(context.getPackageName())) {
MyLog.i("UTIL", "packageName:" + runningTaskInfo.topActivity.getPackageName());
MyLog.i("UTIL", "className" + runningTaskInfo.topActivity.getClassName());
return true;
}
}
return false;
}
Intent notificationIntent;
if (Util.isApplicationRunningBackground(context)) {
notificationIntent = new Intent(context, MainView.class);
} else {
notificationIntent = new Intent(context, Splash.class);
}
答案 4 :(得分:0)
当您暂停某个应用程序并立即返回该应用程序时,该应用程序仍可能在后台停留在内存中。但是,您不能依赖于此,因此您应该在每次进入后台时保存当前打开的选项卡状态,并在重新激活时将其恢复。
答案 5 :(得分:0)
在意图中使用两个标志
intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);