隐式的启动活动,在活动的标签当中加入<action android:name=”自己定义的。。。。”/>
表明活动可以响应我们自己定义的action
同时加入<category android:name=”自己定义的。。。”/>
表明这个活动能更精确的相应Intent可能带有的category。
StartActivityForResult(intent,1);当通过此方法启动的活动销毁后,希望获得从这个活动传递过来的数据。
在被启动的活动中,Intent intent = new Intent();
Intent.putExtra(……..);
setResult(RESULT_OK,intent);
finish();
回到之前的活动后在protected void onActivityResult(int resquestCode,int resultCode,Intent data){
Switch(requestCode){
Case1:{
If(resultCode== RESULT_OK) {
String returnData =data.getStringExtra(……..);
}
}
}
}
Android使用任务Task来管理活动,一个任务就是一组存放在栈里的活动的集合,这个栈被称为返回栈(Back Stack).
活动在其生命周期中具有四种状态:
运行状态:一个活动位于返回栈的栈顶,系统一般不会回收。
暂停状态:一个活动不再处于栈顶,但仍然可见,比如以对话框形式存在与屏幕中间区域的活动,此类活动仍然是完全存货的。
停止状态:活动不再处于栈顶,且完全不可见的时候.系统为这个活动保留相应的状态和成员变量,但你随时会收回内存。
销毁状态:活动从返回栈中移除时,就变成销毁状态。系统最倾向于回收这种状态。
onCreate():活动在第一次被创建的时候调用,用于初始化活动。
onDestroy():活动被销毁之前嗲用,之后活动变为销毁状态。
onResume():此方法在活动准备好和用户进行交互的时候嗲用,此时的活动一定位于返回栈栈顶,并处于运行状态
onPause():系统准备去启动或者或者恢复另一个活动的时候调用。通常使用此方法将一些消耗CPU的资源释放掉,或保存一些关键数据。但执行速度一定要快,否则会影响新的栈顶活动的使用。
onStart():活动由不可见变为可见的时候调用
onStop():在活动完全不可见的时候调用。如果启动的新活动是对话框式的活动,则只会调用
当一个活动被启动的时候,会调用onCreate(),onStart(),onResume()方法,当在此活动上启动另一个活动时,如果为对话框活动,此时本活动会调用onPause()进入暂停状态,同时对话框活动会启动。在对话框活动按Back返回原活动时,原活动会调用onResume()并不会调用onCreate().
如果在本活动的基础上启动另一个完整的活动A,则原活动会依次调用onPause(),onStop(),从活动A上按Back,此时原活动会调用onRestart(),onStart(),onResume();
当在原活动退出时会调用onPauser(),onStop(),onDestroy()。
若启动活动A后,在活动A中输入了一些数据,然后启动了活动B,此时活动A进入了停止状态,并且被系统回收了。在活动B中按下Back。则会重新加载活动,但是之前输入到活动A中的文字会全部丢失,因为活动A重建了。
可以在活动A中重写onSaveInstanceState(Bundle outState)回调方法,这个方法在活动被回收之前一定会保证被调用.
利用此方法中的Bundle参数,可以传递一些数据。
例:
String tempData = “this string is saved”
outstate.putString(“data_key”,tempData);
然后在方法A的onCreate(Bundle saveInstanceState) 的参数中,便可以取出之前回收活动A前保存好的数据,在onCreate()方法中:
If(saveInstanceState != null){
StringtempData = saveInstanceState.getString(“data_key”);
}