(Android review)Activity的生命周期

来源:互联网 发布:淘宝宝贝有浏览量却 编辑:程序博客网 时间:2024/06/11 02:51

一、知识点

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);    }            }





4 0
原创粉丝点击