2010-06-02 84 views
6

我买了标签的应用程序和通知栏条目, 当我把它发送到后台(点击home键) ,并尝试通过点击重新打开应用程序的 通知栏,应用程序重新启动(最后选中 选项卡丢失)。重新打开后台应用

当我按住home键,如果应用程序是在 背景,并从那里选择它或者点击主屏幕上的 应用程序的图标,一个状态是 每默认恢复(正确的选项卡中选择)

IMO通知的意图是错误的,但我是 不知道如何解决它。

简而言之:当我点击通知条目时,如何获取后台应用程序回到 的前景?

thx!

+0

请注意,从通知中触发'Intent'总是会创建一个新的'Activity'实例;你不能直接返回到现有的实例。关于我的头顶,我相信你可以使用CLEAR_TOP之类的标志(和'Activity'中的'onNewIntent')来确保现有的实例保持不变。 – 2010-06-04 14:41:21

回答

0

你实现方法的onSaveInstanceState如在lifecycle documentation?

它可能建议您在暂停的应用程序,并立即回去吧,该应用程序还挂在内存中的背景。但是,您不能依赖于此,因此每次进入后台时应保存当前打开的选项卡状态,并在重新激活时恢复它。

8

把这两条线。这将恢复目前暂停的活动:

notificationIntent.setAction(Intent.ACTION_MAIN); 
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
+2

这是伟大的作品。但更好的使用常量notifyIntent.setAction(Intent.ACTION_MAIN); notifyIntent.addCategory(Intent.CATEGORY_LAUNCHER); – garmax1 2013-11-03 19:11:01

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); 
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); 
     } 
0

使用意图两个标志

intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
2

我也面临着同样的问题,并极力寻找的答案,但这里S中的技巧:使用通知意图和活动的onCreate()方法打开一个空白活动,而不是尝试使用您的通知意图重新启动应用程序,只需完成()即可。这会将您带回应用程序上次查看的活动。

相关问题