2013-09-01 20 views
1

this question我问了如何在推送通知中打开我应用程序中的fragment。我很容易找到解决方案,但现在我面临的问题是,当我按照推送通知时,应用程序的另一个实例被创建。如何从推送通知中打开应用程序而不创建应用程序的另一个实例?

我试过the suggestions given here,但在AndroidManifest文件中添加noHistory="true"activity,导致应用程序关闭时,我不希望它关闭。

按照下面的步骤,我需要的应用程序的所有实例是在第5步其实封闭,我要不会在步骤4中创建应用程序的第二个实例我如何做到这一点?

  1. 从打开应用程序菜单应用程序 - >看到屏幕A.
  2. 导航屏幕从A到B.屏幕
  3. 推送通知到达!
  4. 打开通知抽屉,按照通知进入应用程序,看屏幕C.
  5. 按设备的硬件后退按钮,直到提示退出应用程序 - 说是的!
  6. 查看屏幕B - >您打开通知时的位置!

这表明当您在应用程序中的某个位置进行通知时,会创建应用程序的第二个实例。

为什么? 我该如何杀掉应用程序的第一个实例,或者在提示关闭应用程序并且说Yes时杀死应用程序的两个实例? 或者更好的是,如何在通知进入应用程序时不创建两个实例?

+3

“当我跟着推送通知,应用程序的另一个实例被创建” - 不,没有。在Android中,内存中最多只有一个应用程序进程的副本。然而,从一个'BroadcastReceiver'开始一个活动将会创建[另一个*任务*](http://developer.android.com/guide/components/tasks-and-back-stack.html),因为你需要将'FLAG_ACTIVITY_NEW_TASK'添加到''intent',与'startActivity()'一起使用。 – CommonsWare

+0

我还建议您阅读http://developer.android.com/guide/topics/ui/notifiers/notifications.html#NotificationResponse – CommonsWare

回答

2

我也许有点晚了,以避免您的活动的新实例的创建可以在AndroidManifest添加一个“launchMode”是这样的:

<activity 
     android:name=".MyActivity" 
     android:label="@string/app_name" 
     android:launchMode="singleTop"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

走到通知是开放的singleTop会带来该活动的当前实例,而不是创建一个新实例。

查看有关launchModes此链接了解更多信息:http://www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode

相关问题