根据意图额外开始新活动或提出旧活动

时间:2013-11-07 16:06:10

标签: android

我必须为一个意图设置什么标志,所以如果活动以相同的额外可见,则不会显示新标记。

我的应用程序有点像谷歌游戏。通过将应用程序ID作为Extra发送,可以在AppActivity中显示不同的应用程序。用户可以下载应用程序,下载完成后,会显示完整的通知,按下该按钮会显示相应的活动页面。

目前,通过按通知,它会启动一项新活动,该活动在AppActivity不可见或显示其他应用时是正确的。但即使AppActivity对同一个应用程序可见,它也会启动一个新的AppActivity。

PendingIntent.getActivity(ServiceDownload.this, id,
    new Intent(ServiceDownload.this, AppActivity.class)
        .setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
        .putExtra(Constants.EXTRA_ID, id), 0);

1 个答案:

答案 0 :(得分:1)

在开始活动时使用Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP并在清单文件中将其定义为单个顶部。

如果活动在堆栈中的某个位置,它将被置于顶部(将调用onNewIntent方法)并且将销毁其上方的所有活动。如果它不在堆栈中,则将创建它(将调用onCreate方法)

修改:您必须处理onNewIntent以获取捆绑包并使用新值更新您当前的活动。

注意:另请注意,系统可能会破坏您的活动,并且您可以调用onCreateonNewIntent两种方法。考虑到这一点,设计你的活动。

编辑2:如果您想拥有许多应用详细信息,用户可以使用后退按钮导航回来。还有一个应用程序的一个细节。那你应该使用片段。通过应用程序ID /名称标记(独特的内容)添加片段,并在显示应用详细信息搜索时,如果任何详细信息页面存在findFragmentByTag方法。如果存在则将其删除并将其添加到堆栈顶部。