Activity的生命周期 (Android review)

来源:互联网 发布:java开源用户管理系统 编辑:程序博客网 时间:2024/05/29 15:29

一、知识点

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、示例代码

[java] view plaincopyprint?
  1. public class MainActivityextends Activity { 
  2.      
  3.     private Bitmap bitmap =null
  4.     private staticfinal String TAG = "MainActivity"
  5.  
  6.     // 初始化的操作  (设置布局    控件的初始化  ) 
  7.     @Override 
  8.     public void onCreate(Bundle savedInstanceState) { 
  9.         super.onCreate(savedInstanceState); 
  10.         setContentView(R.layout.main); 
  11.          
  12.         Log.i(TAG, "  onCreate   "); 
  13.         if(savedInstanceState !=null){ 
  14.             int page = savedInstanceState.getInt("page"); 
  15.              
  16.             Log.i(TAG, " onCreate  page " + page); 
  17.         } 
  18.  
  19.     } 
  20.      
  21.     //注册一些监听  (内容观察者) 
  22.     @Override 
  23.     protected void onStart() { 
  24.         // TODO Auto-generated method stub 
  25.         super.onStart(); 
  26.         Log.i(TAG, "  onStart   "); 
  27.     } 
  28.      
  29.     @Override 
  30.     protected void onRestart() { 
  31.         // TODO Auto-generated method stub 
  32.         super.onRestart(); 
  33.         Log.i(TAG, "  onRestart   "); 
  34.     } 
  35.      
  36.     //再次对数据进行查询 
  37.     @Override 
  38.     protected void onResume() { 
  39.         // TODO Auto-generated method stub 
  40.         super.onResume(); 
  41.         Log.i(TAG, "  onResume   "); 
  42.     } 
  43.      
  44.     //数据的临时保存 
  45.     @Override 
  46.     protected void onPause() { 
  47.         // TODO Auto-generated method stub 
  48.         super.onPause(); 
  49.         Log.i(TAG, "  onPause   "); 
  50.     } 
  51.      
  52.     //取消监听    
  53.     @Override 
  54.     protected void onStop() { 
  55.         // TODO Auto-generated method stub 
  56.         super.onStop(); 
  57.         Log.i(TAG, "  onStop   "); 
  58.     } 
  59.      
  60.     //对资源进行回收 (cursor关闭  bitmap  进行回收) 
  61.     @Override 
  62.     protected void onDestroy() { 
  63.         // TODO Auto-generated method stub 
  64.         super.onDestroy(); 
  65.         Log.i(TAG, "  onDestroy   "); 
  66.          
  67.         //cursor.close(); 
  68.         //bitmap.recycle(); 
  69.     } 
  70.      
  71.     @Override 
  72.     protected void onSaveInstanceState(Bundle outState) { 
  73.         // TODO Auto-generated method stub 
  74.         super.onSaveInstanceState(outState); 
  75.         outState.putInt("page",50); 
  76.          
  77.         Log.i(TAG, " onSaveInstanceState "); 
  78.     } 
  79.      
  80.     @Override 
  81.     protected void onRestoreInstanceState(Bundle savedInstanceState) { 
  82.         // TODO Auto-generated method stub 
  83.         super.onRestoreInstanceState(savedInstanceState); 
  84.         int page = savedInstanceState.getInt("page"); 
  85.          
  86.         Log.i(TAG, " onRestoreInstanceState  page " + page); 
  87.     } 
  88.      
  89.     //当横竖屏切换的时候被调用 
  90.     @Override 
  91.     public void onConfigurationChanged(Configuration newConfig) { 
  92.         // TODO Auto-generated method stub 
  93.         super.onConfigurationChanged(newConfig); 
  94.          
  95.         if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){ 
  96.             Log.i(TAG, "   现在是横屏"); 
  97.         }else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
  98.             Log.i(TAG, "   现在是竖屏"); 
  99.         } 
  100.     } 
  101.      
  102.      
  103.     public void open(View v){ 
  104.         Intent intent = new Intent(this,Main2Activity.class); 
  105.         startActivity(intent); 
  106.     } 
  107.      
  108.      
  109.      

0 0
原创粉丝点击