单击“通知”时重用当前应用程序实例

时间:2016-12-19 11:38:04

标签: android android-activity android-notifications android-pendingintent

现在我使用PendingIntentActivity启动我想要的Notification。但我想知道是否可以重用当前的应用实例。

例如:

  • 启动应用,Launcher活动称为HomeActivity
  • 导航至SecondActivity
  • 按主页按钮
  • 点击应用中的通知,然后继续SecondActivity

但是,如果用户没有导航到SecondActivity我想点击通知时打开HomeActivity。对于这个问题,我会很高兴得到任何帮助:)

1 个答案:

答案 0 :(得分:0)

  

但我想知道是否可以重用当前的应用实例。

是的,如果应用在后台,您可以重复使用。在 PendingIntent 中,您将传递意图,因此在意图中,您应该设置一个类似intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);的标记,以便应用在它只会把活动带到前面。

根据android docs:

  

<强> FLAG_ACTIVITY_NEW_TASK

     

在API级别1中添加了int FLAG_ACTIVITY_NEW_TASK如果设置,则此活动   将成为此历史堆栈上新任务的开始。一个任务   (从开始它的活动到下一个任务活动)定义   用户可以移动到的原子活动组。任务可以   移到了前景和背景;里面的所有活动   特定任务的总是保持相同的顺序。请参阅任务和   返回堆栈以获取有关任务的更多信息。

     

此标志通常由想要呈现的活动使用   &#34;发射器&#34;样式行为:它们为用户提供单独的列表   可以完成的事情,否则完全独立运行   启动它们的活动。

     

使用此标志时,如果某个任务已在运行该活动   你现在开始,然后一个新的活动将不会开始;   相反,当前的任务将被简单地带到前面   屏幕显示它的最后状态。请参阅FLAG_ACTIVITY_MULTIPLE_TASK   用于禁用此行为的标志。

     

当呼叫者请求结果时,不能使用此标志   正在推出的活动。

检查文档here

  

但如果用户没有导航到 SecondActivity ,我想打开 HomeActivity

如果您创建的通知目标类具有 SecondActivity 作为启动程序,为什么要启动 HomeActivity 。它将创建一个新的 SecondActivity ,如果它不在后台,则启动它。

编辑:
如果你想重新启动你离开的应用程序,请尝试这样:

final Intent resumeIntent = new Intent(context, YourLauncher.class);
resumeIntent.setAction("android.intent.action.MAIN"); 
resumeIntent.addCategory("android.intent.category.LAUNCHER"‌​);
final PendingIntent resumePendingIntent = PendingIntent.getActivity(context, 0, resumeIntent, 0);

此处YourLauncher.class是启动器类名称。