Activity的生命周期
一个任务就是一组存放在栈里的活动的集合,这个栈也被称为返回栈。
任务状态:运行状态、暂停状态、停止状态、销毁状态
运行状态:当一个活动位于返回栈的栈顶时,这时活动处于运行状态。
暂停状态:当一个活动不再处于栈顶位置,但仍然可见时,活动就进入了暂停状态。
停止状态:当一个活动不再处于栈顶位置,并且完全不可见时,就进入了停止状态。
销毁状态:当一个活动从返回栈移除后就变成了销毁状态。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3QAkxBgu-1692022936007)(ACtivity_Life.png “ACtivity的生命周期”)]
活动被回收,此前数据全部消失,需要使用Activity中的onSaveINstanceState()回调方法,这个方法可以保证活动在回收之前 一定会被调用。
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedINstanceState);
setContentView(R.layout.first_layout);
if(savedInstanceState != null){
String tempData = savedINstanceState.getString("data_key");
}
}
@override
protected void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
}
Activity的启动模式
android:launchMode属性:standard、singleTop、singleTask、singleInstance
standard:每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。
singleTop:在启动活动时,如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例。
singleTask:每次启动活动时,系统会首先在返回栈中检查是否存在该活动的实例,如果发现存在则直接使用,并把在该活动之上的所有活动全部出栈,如果没有就会创建一个新的活动实例。
singleInstance:与其他三个不同,指定为singleInstance的活动会启动一个新的返回栈来管理活动。解决了共享活动实例的问题。
Bundle
在Android中,可以将要保存的数据放在Bundle对象中,然后通过Intent提供的putExtras()方法将要携带的数据保存在Intent中。
Bundle是一个键值对组合,用以保存要携带的数据包。
MainActivity中:
...
Intent intent = new Intent(MainActivity.this, AddressActivity.class);
Bundle bundle = new Bundle();
bundle.putCharSequence("name",name);
...
intent.putExtras(bundle);
startActivity(intent);
...
AddressActivity中:
...
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String name = bundle.getString("name");
参考:《零基础学Android》