Android 最近的应用列表重定向到另一个应用



我在应用程序(我们称之为应用程序"A"(中有代码,当用户单击按钮时,它会在第二个应用程序(我们称之为应用程序"B"(上启动活动。

到目前为止一切顺利,但我希望以后能够使用系统的概述屏幕(又名最近的应用程序列表(返回应用程序"A",但是当我尝试时,我会自动重定向回应用程序 B,就好像我第二次单击按钮一样。

手机运行的是Android KitKat,代码如下所示:

 mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                startActivity(new Intent("com.some.package.MAIN"));
            } catch (ActivityNotFoundException e) {
                e.printStackTrace();
            }
        }
    });

到目前为止一切顺利,但我希望以后能够使用系统的概述屏幕(又名最近的应用程序列表(返回应用程序"A",但是当我尝试时,我会自动重定向回应用程序 B,就好像我第二次单击按钮一样。

这是安卓的默认行为。Android Activity 生命周期使用名为 Task 的基于上下文的统计信息。因此,应用程序"B"只是在调用活动应用程序"A"的任务中。

您可以使用以下标志重写此行为。

  mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                Intent i=new Intent("com.some.package.MAIN");                    
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                    
                startActivity(i);
            } catch (ActivityNotFoundException e) {
                e.printStackTrace();
            }
        }
    });

1( FLAG_ACTIVITY_NEW_TASK - 如果设置,此活动将成为此历史记录堆栈上新任务的开始。任务(从启动它的活动到下一个任务活动(定义用户可以移动到的原子活动组。任务可以移动到前台和后台;特定任务中的所有活动始终保持相同的顺序。

2( FLAG_ACTIVITY_CLEAR_TOP - 如果设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是关闭其上的所有其他活动,并且此意图将作为新意图传递到(现在位于顶部(旧活动。

3( FLAG_ACTIVITY_SINGLE_TOP - 如果设置,如果活动已在历史记录堆栈的顶部运行,则不会启动该活动。

相关内容

最新更新