我设法从我们的应用程序获取通知,只要它收到推送,就会出现在屏幕顶部的通知栏中。我的应用程序是一个视图层次结构。我有我的主屏幕与列表视图。当其中一个列表视图项被点击时,它会打开一个摘要屏幕(也包含一个列表视图),当其中一个摘要屏幕列表视图项被点击时,它会打开一个详细信息屏幕(层次结构中的最后一个屏幕)。用户可以点击后退按钮将层次结构返回到主屏幕(或主屏幕)。从Android通知栏启动应用程序。如何开始一个新的应用程序实例,而不是恢复后台进程?
现在,我的应用程序和大多数应用程序都倾向于在后台运行,直到后退按钮被击中足够多的时间。我设置我的通知来点击时启动mainScreen的一个实例。事情是,如果应用程序已经运行,我这样做,它会在所有其他屏幕上创建另一个主屏幕,所以当用户点击主屏幕上的后退按钮(期望退出应用程序)时,他会返回当他离开我的应用程序在后台运行时,无论屏幕是否处于活动状态。
所以,我可能回去了这样的层次: mainScreen - > detailsScreen - > summaryScreen - > mainScreen - >退出
有没有一种方法,我可以只杀应用程序,并开始一个新的实例当用户点击我的通知?这些通知点击通常如何处理?
希望这是有道理的。
谢谢。当我说detailScreen(在你的例子中是activityB)是层次结构中的最后一个时,我并不是完全诚实的,在这个屏幕上,用户实际上已经拥有了这个组件选项来查看地图
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("geo:0,0?q=" + depLatitude + "," + depLongitude + "(" + name + ")"));
startActivity(intent);
当我按下背面的地图上,理想的情况是它返回到detailsScreen,但在这种情况下,它会马上回mainScreen。
任何想法? )
感谢您的出色答案,但我不确定这是如何适用于我想要做的。当用户点击后退按钮时,完成()不会被调用,除非我将noHistory设置为true?我想让活动保持活跃状态,直到用户点击后退按钮。但是,例如,如果用户在detailsScreen上点击了HOME按钮,并且推入时,他通过通知栏启动应用程序,我希望属于我的应用程序的任何和所有背景活动都被终止,并且mainScreen的新实例活动被创建,然后从这里开始流程。 – PaulG
这就是我想说的,把重新排序前MainActivity的标志和没有历史的其余活动。只要主屏幕被按下,没有历史标志的活动就会被破坏,当你从通知栏启动主要活动时,同样的MainActivity被重新排序到前面。 –
我看到了,我会试试看看它是如何发生的。 – PaulG