一、知识点
activity各个生命周期中各个函数常见的一些操作
1、onCreate() 初始化的操作 (设置布局 控件的初始化 )
2、onStart() //注册一些监听 (内容观察者)
3、onResume() 再次对数据进行查询
4、onPause() //数据的临时保存
5、onStop() //取消监听
6、onDestroy() //对资源进行回收 (cursor关闭 bitmap 进行回收)
这里还有两个方法是需要注意一下的:
7、onSaveInstanceState():在onResume()之后调用
8、onRestoreInstanceState(Bundle savedInstanceState) :在onResume()之前调用
9、onConfigurationChanged(Configuration newConfig) :当横竖屏切换的时候被调用
横竖屏切换的时候:
竖屏到横屏:activity首先被销毁,在创建一个新的activity
横屏到竖屏:activity首先被销毁,再创建一个新的activity,再把该activity销毁,再创建一个新的activity.(是由于输入法的影响)
7、 <activity
android:label="绗竴涓猘ctivity"
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden">
configChanges="orientation|keyboardHidden: 横竖屏切换的时候不会创建新的Activity
android:configChanges="orientation" : 横竖屏切换时都只创建和销毁一个activity。(默认是竖屏---》横屏:销毁一个,创建一个。横屏到竖屏:销毁一个,创建一个,销毁一个,创建一个。因为受到输入法的影响)
Activity的作用:
起显示作用,他是用来和用户交互的。也是一个view的容器
1 完整的生命周期:
onCreate() --> onStart() --> onResume() activiyt已经正常显示
点击回退键
onPause() --> onStop() --> onDetroy()
2 可视的生命周期
onCreate() --> onStart() --> onResume() activiyt已经正常显示
打开一个activity。该activity完全覆盖上一个activity
onPause() ---> onStop()
点击回退键
onRestart() --> onStart() ---> onResume()
点击回退键
onPause() --> onStop() --> onDetroy()
3 android:theme="@android:style/Theme.Dialog"
就可以把activity变成对话框的效果
onCreate() --> onStart() --> onResume() activiyt已经正常显示
打开一个activity。该activity没有完全覆盖上一个activity
onPause()
点击回退键
onResume()
二、生命周期图
3、示例代码
public class MainActivity extends Activity { private Bitmap bitmap = null; private static final String TAG = "MainActivity"; // 初始化的操作 (设置布局 控件的初始化 ) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i(TAG, " onCreate "); if(savedInstanceState != null){ int page = savedInstanceState.getInt("page"); Log.i(TAG, " onCreate page " + page); } } //注册一些监听 (内容观察者) @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.i(TAG, " onStart "); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.i(TAG, " onRestart "); } //再次对数据进行查询 @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.i(TAG, " onResume "); } //数据的临时保存 @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.i(TAG, " onPause "); } //取消监听 @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.i(TAG, " onStop "); } //对资源进行回收 (cursor关闭 bitmap 进行回收) @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.i(TAG, " onDestroy "); //cursor.close(); //bitmap.recycle(); } @Override protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub super.onSaveInstanceState(outState); outState.putInt("page", 50); Log.i(TAG, " onSaveInstanceState "); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onRestoreInstanceState(savedInstanceState); int page = savedInstanceState.getInt("page"); Log.i(TAG, " onRestoreInstanceState page " + page); } //当横竖屏切换的时候被调用 @Override public void onConfigurationChanged(Configuration newConfig) { // TODO Auto-generated method stub super.onConfigurationChanged(newConfig); if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){ Log.i(TAG, " 现在是横屏"); }else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ Log.i(TAG, " 现在是竖屏"); } } public void open(View v){ Intent intent = new Intent(this,Main2Activity.class); startActivity(intent); } }