Android Activity生命周期详解

理解android Activity生命周期能让我们更清楚,应用程序运行的过程我们需要给数据保存,后台运行什么时候对线程暂停与恢复。
下面我们先来看看onCreate,onStart,onRestoreInstanceState,onResume,onPause,onSaveInstanceState,onStop,onDestroy。执行过程。

使用开发环境android studio,测试设备红米1

package com.example.xjd.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
   // private static final int TAG;//

    //应用程序启动的时调用
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化一个Activity并填充UI

        Log.i("TAG", "onCreate()");
    }

    //在onCreate()方法完成后调用,用于恢复UI状态
    @Override
    public  void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        //自activity上次可见之后,只有当系统终止了该Activity时,才会被调用
        Log.i("TAG","onRestoreInstanceState()");
    }

    @Override
    public  void onRestart() {
        //加载改变,知道activity在此进程中已经可见
        super.onRestart();
        Log.i("TAG","onRestart()");
    }

    //在可见生存期开始时调用
    @Override
    public  void onStart() {
        //Activity快要变成可见的
        super.onStart();
        Log.i("TAG","onStart()");
    }
    //Activity变成可见的,处于运行状态
    @Override
    public void onResume() {

        super.onResume();
        Log.i("TAG","onResume()");
    }
    //把UI状态改变保存到savedInstanceState
    @Override
    public  void onSaveInstanceState(Bundle savedInstanceState) {
        //适合用于保存一些临时性的状态
        super.onSaveInstanceState(savedInstanceState);
        Log.i("TAG","onSaveInstanceState()");
    }

    //其他Activity获得用户焦点,(Activity快要暂停了)
    @Override
    public  void onPause() {
        super.onPause();
        //退到背景画面的状态,例如当电话来时,原本运行的Activity退到背景画面,新出现的界面半遮住原来的Activity画面。
        Log.i("TAG","onPause()");
    }

    //在可见生命期结束时调用,界面消失时调用
    @Override
    public void onStop(){
        //挂起不需要的UI更新、线程或者处理等
        //当Activity不可见时,保持所有的编辑或者状态改变,因为在调用这个方法后,进程可能会被终止
        super.onStop();
        Log.i("TAG","onStop()");
    }

    //在整个生命周期结束时调用
    @Override
    public  void onDestroy() {
        //清理所有的资源,包含结束线程、关闭网络、数据库连接等
        super.onDestroy();
        Log.i("TAG","onDestroy()");
    }
}

1.第一次启动应用程序执行过程onCreate()->onStart()->onResume()

这里写图片描述

2.按返回键(Back)执行过程onPause()->onStop()->onDestroy()
这里写图片描述

3.按Home键或者锁屏幕执行过程onPause()->onSaveInstanceState()->onStop()
这里写图片描述
4.按Back键以后再回原来的应用程序执行过程与第一次启动应用过程一样,因为按Back键调用了OnDestroy(),所以相当于重新启动应用。onCreate()->onStart()->onResume()
这里写图片描述
5.按Home键后再回原来的应用程序(锁屏后再回原来应用也一样)执行过程onRestart()->onStart()->onResume()
这里写图片描述

6.如果把应用程序在后台服务停止了,然后在重启应用执行过程onCreate()->onStart()->onRestoreInstanceState()->onResume()
这里写图片描述

以上就是通过各个事件返回得到执行结果。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值