Android学习之路 Activity 和 Fragment 生命周期

Android Activity Fragment 生命周期理解

一 Activity生命周期
Activity声明周期的组成
 onCreate onStart onResume onPause onStop onDestory onRestart

(1)onCreate
创建Activity回调,一个Activity生命周期内只会调用一次

(2)onStart
启动Activity时回调,在onRestart()调用后也会调用onStart

(3)onResume
恢复Activity时回调,在onStart后一定会调用该方法

(4)onPause
当Activity失去焦点时,或被一个新的非全屏的Activity,或被一个透明的Activity放置在栈顶时,
Activity就转化为Paused状态。但我们需要明白,此时Activity只是失去了与用户交互的能力,
其所有的状态信息及其成员变量都还存在,只有在系统内存紧张的情况下,才有可能被系统回收掉。

(5)onStop
当Activity被另一个Activity完全覆盖时调用(即另一个Activity已经处于处于栈顶可以与用户完成交互时),
或者退出程序时调用。

(6)onDestroy
销毁Activity时调用,和onCreate方法一样,该方法也只会调用一次,标志该Activity生命周期的结束

引用官方文档的Activity生命周期流程图

该流程图完成的展示了一个Activity从启动到销毁的流程。下面来代码来验证流程: 

下面的程序定义了两个Activity(MainActivity , TestActivity),在MainActivity的布局文件中定义一个Button用
来启动TestActivity,然后重写Activity的生命周期回调函数,在回调函数中用日志Log来记录被调用的过程。其中
MainActivity日志以“Activity”开头 ,TestActivity以“Test”开头.
布局文件就一个Button 和一个onClick事件监听方法BtnOnClickListener,不再列出布局文件代码

MainActivity代码:
public class MainActivity extends AppCompatActivity {

    final static String TAG = "ACTIVITY"  ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG , "Activity oncreate");

    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG , "Activity onresume");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG , "Activity onstart");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG , "Activity onpause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG , "Activity onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG , "Activity onDestory");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d(TAG , "Activity onrestart");
    }

    public void BtnOnClickListener(View view )
    {
        //在MainActivity中启动TestActivity
        Intent intent = new Intent()  ;
        intent.setClass(MainActivity.this , TestActivity.class) ;
        startActivity(intent);
    }
}
TestActivity代码:
public class TestActivity extends Activity {
    final static String TAG = "TEST"  ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView textView = new TextView(this) ;
        textView.setText("测试文本");
        textView.setTextSize(30);
        setContentView(textView);
        Log.d(TAG , "TEST oncreate");

    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG , "TEST onresume");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG , "TEST onstart");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG , "TEST onpause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG , "TEST onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG , "TEST onDestory");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d(TAG , "TEST onrestart");
    }
}
启动观察:

此时点击Button按钮,进入TestActivity

点击返回到MainActivity有:

分析得到:
1 自然启动过程 创建onCreate(只在创建的时候调用一次)----->启动onStart(在Stop后Restart可再此进入该步骤)-------> 恢复onResume(在Pause后恢复时再此调用)------->运行状态> 2 自然退出过程暂停onPause()-------->停止onStop()-------->销毁onDestory() -------->结束>

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值