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的实例的特殊栈。
本文详细介绍了Android中Activity的四种启动模式:standard、singleTop、singleTask及singleInstance,并通过示例代码展示了不同模式下Activity的行为差异。
959

被折叠的 条评论
为什么被折叠?



