加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_郴州站长网 (http://www.0735zz.com/)- 云通信、区块链、物联设备、云计算、站长网!
当前位置: 首页 > 教程 > 正文

Android开发教程:Activity的生命周期畅聊

发布时间:2021-12-18 13:44:24 所属栏目:教程 来源:互联网
导读:1.Android系统中Activity作为Activity栈(Stack)被管理的,大家都知道栈的特点是先进后出,所以当前活动的Activity处于栈顶,之前非活动的Activity被压入栈底,等待是否可能被恢复为活动状态。 Android API中所提供的Activity生命周期图: 2.下面的整个Acti

1.Android系统中Activity作为Activity栈(Stack)被管理的,大家都知道栈的特点是先进后出,所以当前活动的Activity处于栈顶,之前非活动的Activity被压入栈底,等待是否可能被恢复为活动状态。
 
Android API中所提供的Activity生命周期图:
 
 
 
2.下面的整个Activity生命周期中的所有方法,我们可以根据程序的需要来覆盖相应的方法:
 
public class Activity extends ApplicationContext {  
       //创建的时候调用  
       protected void onCreate(Bundle savedInstanceState);  
       //启动的时候调用  
       protected void onStart();     
       //重新启动的时候调用  
       protected void onRestart();  
       //恢复的时候调用  
       protected void onResume();  
       //暂停的时候调用  
       protected void onPause();  
       //停止的时候调用  
       protected void onStop();  
       //销毁的时候调用  
       protected void onDestroy();  
   }
 
 
onCreate(Bundle savedInstanceState):创建activity时调用。设置在该方法中,还以Bundle的形式提供对以前储存的任何状态的访问!
onStart():activity变为在屏幕上对用户可见时调用。
onResume():activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)
onPause():activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是保护现场,压栈。
onStop():activity被停止并转为不可见阶段及后续的生命周期事件时调用。
onRestart():重新启动activity时调用。该活动仍在栈中,而不是启动新的活动
onDestroy():activity被完全从系统内存中移除时调用
3.下面通过实例来测试Activity的生命周期中各个方法的调用情况,将Activity的所有方法都覆盖,主要用Log打印输出信息,并通过日志(LogCat)方式来观察运行结果。Log.v(String tag, String msg); //Verbose
Log.d(String tag, String msg);  //Debug
Log.i(String tag, String msg); //Info
Log.w(String tag, String msg); //Warning
Log.e(String tag, String msg); //Error
tag类似标签,可以是任意字符串,通常可以使用类名+方法名, 主要是用来在查看日志时提供一个筛选条件。
 
下面的实例是测试Activity的生命周期中各个方法的调用情况:
 
MainActivity.java
 
package com.android.TestAvtivity.activity;  
 
import android.app.Activity;  
import android.os.Bundle;  
import android.util.Log;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
 
public class MainActivity extends Activity {  
      
    private Button btn;  
    private static final String TAG="MainActivity";  
    @Override
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        //输出日志  
        Log.i(TAG, "MainActivity onCreate--->");  
        btn = (Button)findViewById(R.id.Button1);  
        btn.setOnClickListener(new OnClickListener() {  
            @Override
            public void onClick(View v) {  
                //结束当前的Activity  
                MainActivity.this.finish();  
            }  
        });  
    }  
      
    @Override
    //启动  
    protected void onStart() {  
        super.onStart();  
        //输出日志信息  
        Log.i(TAG, "MainActivity onStart--->");  
    }  
      
    @Override
    //重启  
    protected void onRestart() {  
        super.onRestart();  
        //输出日志信息  
        Log.i(TAG, "MainActivity onRestart--->");  
    }  
      
    @Override
    //恢复  
    protected void onResume() {  
        super.onResume();  
        //输出日志信息  
        Log.i(TAG, "MainActivity onResume--->");  
    }  
      
    @Override
    //暂停  
    protected void onPause() {  
        super.onPause();  
        //输出日志信息  
        Log.i(TAG, "MainActivity onPause--->");  
    }  
      
    @Override
    //停止  
    protected void onStop() {  
        super.onStop();  
        //输出日志信息  
        Log.i(TAG, "MainActivity onStop--->");  
    }  
      
    @Override
    //销毁  
    protected void onDestroy() {  
        super.onDestroy();  
        //输出日志信息  
        Log.i(TAG, "MainActivity onDestroy--->");  
    }   

(编辑:开发网_郴州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读