博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
详解 Android Activity 生命周期
阅读量:6325 次
发布时间:2019-06-22

本文共 2431 字,大约阅读时间需要 8 分钟。

  从以下几个方面详细说一下Activity的生命周期:

  1.回到主屏幕再打开和退出程序的时候

  2.屏幕旋转的时候。

  3.打开其它的Activity的情况。

  4.打开一个Layou透明的Activity的情况。

  源代码:

  先来一张Activity的生命周期图镇楼。

  

  新建一个工程,实现如图所示的生命周期的所有方法,只是在方法里添加一个打印输出,让我们能清楚的看到

当前Activity执行的生命周期回调方法。

@Override    protected void onStart() {        System.out.println("onStart");        super.onStart();    }    @Override    protected void onResume() {        System.out.println("onResume");        super.onResume();    }    @Override    protected void onPause() {        System.out.println("onPause");        super.onPause();    }    @Override    protected void onStop() {        System.out.println("onStop");        super.onStop();    }    @Override    protected void onRestart() {        System.out.println("onRestart");        super.onRestart();    }    @Override    protected void onDestroy() {        System.out.println("onDestroy");        super.onDestroy();    }

 

当我们第一次运行我们的程序,app进入主页面,看一下logcat的输出:执行了onCreate、onStart、onResume方法。

 

1.返回到主屏幕的时候。

  我们按一下Home键返回到主屏幕,看一下它的执行的动作。

  执行了onPause和onStop方法。点击我们的app,进入主程序发现它执行了onRestart、onStart和onResume。

我们第一次运行app的时候是没有执行onRestart方法的。和我们看官方的文档一至,在Activity被停止后再次激活的时候

才会被调用。

Called after your activity has been stopped, prior to it being started again. Always followed by onStart()

 

我们点击关闭app看一下它会回调哪些生命周期函数。

  这时它会执行onStop和onDestory方法。至此我们走完了一个最简单的生命周期流程。

 

2.旋转屏幕的时候。

   运行我们的应用程序,和第一次打开一样调用create,start.和resume

  接下来我们旋转一下屏幕看一下会发生什么。

  一下子。调用了好多。它是先把Activity关闭掉,再重新new一个activity。这里就要注意了,如果我们的程序

需要支持屏幕旋转,那我这就要调用onSaveInstanceState()方法来保存当前的数据状态,在onCreate方法里恢复

这些状态的值。

3.打开一个其它的Activity.

  修改一个我们的程序,在主页面加一个按钮,再加一个Activity。

  点击按钮的时候打开我们新添加的Activity

final Button btn = (Button) findViewById(R.id.button);        btn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent(MainActivity.this, MessageTip.class);                startActivity(intent);            }        });

 

  运行我们的App.还是和之前一样调用 onCreate(),onStart() 和onResume.

  然后在主页面上按一下我们的按钮,打开另一个Activity.

  按返回键看一下。

  它会调用onRestart(),onStart(),onResume。这样和我们讲的方法1.进入主屏幕再返回是一样的。

4.打开透明的Activity.

  透明的Activity我们做一个简单的,直接在AndroidManifest.xml里添加一个行代码

  

  再运行我们的app.调用那三个方法。

  点击主页上的按钮打开透明的Activity.看一下调用了哪些函数。

  只调用了onPause。点击返回

调用了onResume()方法。

发现没打开透明的Activity,原Acitvity没有调用onStop()方法,关闭透明的Activity。原Activity没有调用onRestart()

和onStart()方法。

 ok就到这里,activity的生命周期非常重要!activity的生命周期非常重要!activity的生命周期非常重要!

重要的事情说三遍!!

源代码:

转载地址:http://cfqaa.baihongyu.com/

你可能感兴趣的文章
ini_set()函数的使用 以及 post_max_size,upload_max_filesize的修改方法
查看>>
联想S720/S720i通刷刷机包 Vibe V1.0
查看>>
java异常 之 异常的层次结构
查看>>
数据库设计原则
查看>>
T - stl 的mapⅡ
查看>>
Matlab中的取整-floor,ceil,fix,round
查看>>
Atitit .c#的未来新特性计划草案
查看>>
经验总结17--submitbutton,ajax提交
查看>>
mysql分表技术
查看>>
.Net 垃圾回收和大对象处理 内存碎片整理
查看>>
Linux是如何启动的
查看>>
HiKey连接
查看>>
wget 参数大全
查看>>
使用Loadrunner进行文件的上传和下载
查看>>
Linux C 静态库(.a) 与 动态库(.so) 的详解
查看>>
JS函数
查看>>
sql语句分组/排序/计算总数/连接等sql语句书写
查看>>
【.net 深呼吸】启动一个进程并实时获取状态信息
查看>>
MVC5 的MicrosoftOwinSecurity扩展插件——微信,QQ登录第三方源码
查看>>
分布式系统理论基础 - CAP
查看>>