Android Acitivity启动模式

本文详细介绍了Android中Activity的四种启动模式:standard、singleTop、singleTask及singleInstance,并通过示例代码展示了不同模式下Activity的行为差异。

Activity启动模式对于我们很多应用中会有不同的要求,这儿简单说一下Activity的四种启动模式之间的差别

1.standard默认启动模式,如果不在AndroidMainfest文件中配置,默认为这个模式。

这种模式下,每次启动这个Activity都会调onCreate方法创建新的实例。

示例代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.i("MainActivity","onCreate  :");
    }
    public void clickButton(View view) {
        startActivity(new Intent(this, MainActivity.class));
    }

    @Override
    protected void onResume() {
       super.onResume();
       Log.i("MainActivity", " onResume instance :" + this.toString() + "  taskID :" + this.getTaskId());
    }
}

 

这儿写一个按钮,点击按钮启动本身,Log可以看出,打印的instance 不相同,taskID 相同,点击返回,不会直接退出应用,而是会闪一下,但是页面显示没变,这就代表是同一个activity的不同实例。

2.singleTop唯一栈顶模式,当启动该activity时,如果该activity有实例在栈顶,就不再重新创建新的实例,而是就用当前栈顶的实例,如果该activity没有实例在栈顶就创建新的实例于栈顶。
    跟第一点中同样的代码,会发现每次点击按钮,不会走onCreate方法去创建新的实例。


3.singleTask当需要启动的activity有实例存在于栈中,就不会再创建新的实例,而是把该实例上面的activity的实例出栈,让该activity位于栈顶,用当前实例。

4.singleInstance该启动模式会单独开辟一个特殊的栈用于存放该activity的实例,当启动别的activity的时候,跳到该进程所处的正常的那个栈,当再次启动该activity的时候,重新跳转到存放该activity的实例的特殊栈。

 

转载于:https://my.oschina.net/u/2337595/blog/845776

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值