Android基础#3:Android Activity生命周期详解,onCreate~onRestart

  一切皆有生命。-----箴言-----

1. Activity生命周期图解:

作为与用户交互的桥梁,从生到灭,Activity有自己的生命周期,相信对下面这张图都不陌生。这张图详细而直观得表现了Activity各生命周期间的关系。

Activity生命周期

图解:

onCreate():

创建,这是Activity生命周期的第一个方法,也是我们在android开发中接触的最多的生命周期方法。
当点击activity的时候,系统会调用activity的oncreate()方法,在这个方法中,会初始化当前布局setContentLayout()方法。

onStart():

这是Activity生命周期的第二个方法。在onCreate()之后被调用,此时Activity已经可见了,但是还没出现在前台,我们还看不到,无法与Activity交互。
onResume():
在onStart()之后被调用,Resume表示继续、重新开始,这名字和它的职责也相同。此时,Activity在这个阶段已经出现在前台并且可见了。当前activity状态属于运行状态 (Running),可与用户进行交互。

onPouse():
暂停,当另外一个activity覆盖当前的acitivty时,此时当前activity会进入到onPouse()方法中,当前activity是可见的,但不能与用户交互状态。

onStop():

停止,此时Activity已经不可见了,但是Activity对象还在内存中,没有被销毁。
在系统内存紧张的情况下,有可能会被系统进行回收。所以一般在当前方法可做资源回收。

onDestory()
销毁,这个阶段Activity被销毁,activity不可见,我们可以将还没释放的资源释放,以及进行一些回收工作。

onRestart()
重新开始,Activity在这时可见,当用户按Home键切换到桌面后又切回来或者从后一个Activity切回前一个Activity就会触发这个方法。调用顺序onPouse()->onStop()->onRestart()->onStart()->onResume()。

Activity生命周期打印:

代码:

//打印生命周期log
public class MainActivity extends Activity {

    private static final String TAG = "MainActivity";

    FrameLayout viewContent;

    protected TextView tvTitle;

    

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvTitle = findViewById(R.id.title_Textview);
        viewContent= (FrameLayout) findViewById(R.id.viewContent);
        
    }

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

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

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

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

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

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


    protected void setTitle(String title){
        if (!TextUtils.isEmpty(title)){
            tvTitle.setText(title);
        }
    }


    
}

 

当两个Activity切换时各自的生命周期:

ActivityA:onCreate()->onStart()->onResume()->onPouse()
ActivityB:onCreate()->onStart()->onResume()
ActivityA:onStop()->onDestory()

当ActivityA切换ActivityB(此activity是以dialog形式存在的)所执行的方法:

ActivityA:onCreate()->onStart()->onResume()->onPouse()
ActivityB:onCreate()->onStart()->onResume()
 


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值