现在我使用PendingIntent
从Activity
启动我想要的Notification
。但我想知道是否可以重用当前的应用实例。
例如:
HomeActivity
SecondActivity
SecondActivity
但是,如果用户没有导航到SecondActivity
我想点击通知时打开HomeActivity
。对于这个问题,我会很高兴得到任何帮助:)
答案 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
是启动器类名称。