我买了标签的应用程序和通知栏条目, 当我把它发送到后台(点击home键) ,并尝试通过点击重新打开应用程序的 通知栏,应用程序重新启动(最后选中 选项卡丢失)。重新打开后台应用
当我按住home键,如果应用程序是在 背景,并从那里选择它或者点击主屏幕上的 应用程序的图标,一个状态是 每默认恢复(正确的选项卡中选择)
IMO通知的意图是错误的,但我是 不知道如何解决它。
简而言之:当我点击通知条目时,如何获取后台应用程序回到 的前景?
thx!
我买了标签的应用程序和通知栏条目, 当我把它发送到后台(点击home键) ,并尝试通过点击重新打开应用程序的 通知栏,应用程序重新启动(最后选中 选项卡丢失)。重新打开后台应用
当我按住home键,如果应用程序是在 背景,并从那里选择它或者点击主屏幕上的 应用程序的图标,一个状态是 每默认恢复(正确的选项卡中选择)
IMO通知的意图是错误的,但我是 不知道如何解决它。
简而言之:当我点击通知条目时,如何获取后台应用程序回到 的前景?
thx!
你实现方法的onSaveInstanceState如在lifecycle documentation?
它可能建议您在暂停的应用程序,并立即回去吧,该应用程序还挂在内存中的背景。但是,您不能依赖于此,因此每次进入后台时应保存当前打开的选项卡状态,并在重新激活时恢复它。
把这两条线。这将恢复目前暂停的活动:
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
这是伟大的作品。但更好的使用常量notifyIntent.setAction(Intent.ACTION_MAIN); notifyIntent.addCategory(Intent.CATEGORY_LAUNCHER); – garmax1 2013-11-03 19:11:01
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);
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);
}
使用意图两个标志
intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
我也面临着同样的问题,并极力寻找的答案,但这里S中的技巧:使用通知意图和活动的onCreate()方法打开一个空白活动,而不是尝试使用您的通知意图重新启动应用程序,只需完成()即可。这会将您带回应用程序上次查看的活动。
请注意,从通知中触发'Intent'总是会创建一个新的'Activity'实例;你不能直接返回到现有的实例。关于我的头顶,我相信你可以使用CLEAR_TOP之类的标志(和'Activity'中的'onNewIntent')来确保现有的实例保持不变。 – 2010-06-04 14:41:21