最新技术
联系我们
主页 > 最新技术 > 最新技术

(Android review)Activity的生命周期,androidactivity

时间:2019-02-01  编辑:环亚

(Android review)Activity的生命周期,android亚虎娱乐官网activity

一、知识点

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






android面试介绍一下activity的生命周期,

  activity主要生命周期的方法说明: onCreate(Bundle savedInstanceState):创建activity时调用。设置在该方法中,还以Bundle的形式提供对以前储存的任何状态的访问!
  onStart():activity变为在屏幕上对用户可见时调用。
  onResume():activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)。 onPause():activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是保护现场,压栈吧!
  onStop():activity被停止并转为不可见阶段及后续的生命周期事件时调用。
  onRestart():重新启动activity时调用。该活动仍在栈中,而不是启动新的活动。 OnDestroy():activity被完全从系统内存中移除时调用,该方法被 2.横竖屏切换时候activity的生命周期
  1、新建一个Activity,并把各个生命周期打印出来
  2、运行Activity,得到如下信息
  onCreate-->onStart-->onResume-->
  3、按crtl+f12切换成横屏时
  onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->
  4、再按crtl+f12切换成竖屏时,发现打印了两次相同的log
  onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->
  5、修改AndroidManifest.xml,把该Activity添加 android:configChanges="orientation",执行步骤3
  onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->
  6、再执行步骤4,发现不会再打印相同信息,但多打印了一行onConfigChanged
  onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->onConfigurationChanged-->
  7、把步骤5的android:configChanges="orientation" 改成 android:configChanges......余下全文>>
 
Android中的Activity的生命周期?

第一个Activity的启动顺序onCreate()——>onStart()——>onResume()

第二个Activity启动时:第一个Activity onPause()——>第二个Activity onCreate()——>onStart()——>onResume() ——>第一个Activity onStop()
 

http://www.bkjia.com/Androidjc/867482.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/867482.htmlTechArticle(Android review)Activity的生命周期,androidactivity 一、知识点 activity各个生命周期中各个函数常见的一些操作 1、onCreate() 初始化的操作 (设置...

本文源自: AG游戏网站

Copyright © 2005-2016 http://www.firebugkc.com AG游戏网站_亚洲最佳百家乐游戏平台_AG环亚集团_网易体育版权所有 AG游戏网站_亚洲最佳百家乐游戏平台_AG环亚集团_网易体育