Android面试基础知识之:Activity四种启动模式

Activity四种启动模式

  • 1.standard(默认模式)
  • 2.singleTop
  • 3.singleTask
  • 4.singleInstance

进入程序会创建一个默认的Activity实例(MainActivity)跟用户交互,与此同时还会创建一个跟应用程序包名名字一样的任务栈,把默认的创建的Activity实例压入栈中。
在清单文件中配置


            
                
                
            
        

1.standard系统默认的启动模式

standard模式启动ActivityB,创建类ActivityB的实例压入栈中。


Android面试基础知识之:Activity四种启动模式_第1张图片
ActivityB可存在多个实例并且可以重叠存在

启动Activity方式

// 显示启动
Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivity(intent);
//隐式启动
Intent intent = new Intent();
intent.setAction("action");
startActivity(intent);

2.singleTop启动模式

singleTop模式启动ActivityB,系统会检查栈的栈顶是否存在类ActivityB的实例,存在直接使用该对象并回调onNewIntent(Intent intent)方法。不存在类ActivityB的实例,则创建类ActivityB的对象压入栈顶。


Android面试基础知识之:Activity四种启动模式_第2张图片
ActivityB可以存在多个实例但不能重叠存在

3.singleTask启动模式

singleTask模式启动ActivityB, 栈中已经存在类ActivityB的实例,则系统会把栈中类ActivityB的实例之上所有Activity实例销毁,然后回调类ActivityB的实例onNewIntent(Intent intent)方法。栈中不存在类ActivityB的实例,则创建类ActivityB的实例压入栈顶。


Android面试基础知识之:Activity四种启动模式_第3张图片
ActivityB不会存在相同的实例Activity

4.singleInstance启动模式

singleInstance模式启动ActivityB,系统会为它创建新的任务栈,然后创建类ActivityB的实例并压如栈中,该栈只存一个实例对象。如下图说明在类ActivityB的实例中singleInstance模式启动ActivityC。


Android面试基础知识之:Activity四种启动模式_第4张图片
ActivityB实例单独占一个Task并且只存在ActivityB一个实例

你可能感兴趣的:(Android面试基础知识之:Activity四种启动模式)