android开发------Activity生命周期
这几天工作比较忙,基本没有什么时间更新播客了。
趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征
什么是生命周期
在还没有接触android开发的时候,听到有人说Activity生命周期的时候,觉得这是一个很专业很深奥的东西。
但是在了解过之后,原来并不是那么一回事,这个Activity生命周期其实是很基础的东西,明白他们的原理对我们以后开发
编写优秀程序有很大帮助。
生命周期其实就是一个东西从出生到消亡的这段时间,那么Activity生命周期又是怎么一回事呢?
我们先借用官方的一张图说明一下,看下面的图。
从图中可见,在Activity的生命周期中,在不同的阶段都由不同他的函数控制它们的行为。当然这个行为可以由用户自己决定。
我们先不看图片左边的箭头,我们看的是图片中间和右边的部分。
周期第一阶段:活定阶段,即从lanucned到running阶段。
特征:处于窗口最前端,整个Activity都可以被用户看见
函数执行顺序:onCreate()->onStart()->onResume()
为了证明这些函数是确确实实被执行的,我们编写以下代码:
1 package com.aidevelops.activitys; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.util.Log; 6 7 public class MainActivity extends Activity { 8 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_main); 13 Log.d("Active", "onCreate method started"); 14 } 15 16 @Override 17 protected void onResume() { 18 super.onResume(); 19 Log.d("Active", "onResume method started"); 20 } 21 22 @Override 23 protected void onStart() { 24 super.onStart(); 25 Log.d("Active", "onStart method started"); 26 } 27 28 29 30 }
View Code
Log.d(tag, message)函数用于将指定tag的message打印到logcat控制台
我们可以将tag理解为一个分类
运行程序后打开LogCat窗口,创建一个条件过滤器
如图:
点击绿色的+号后弹出一个窗口:
注意Log.d()函数的第一个参数就是by log Tag中的Tag,第二个参数是要打印到LogCat控制台的信息
填好后点击OK。接着点刚才创建的LiifeCycle过滤器,就能看到下图的信息:
我们可以看到,每个函数都按顺序执行了。
第二阶段:暂停阶段
特征:Activity被部分遮挡。例如被半透明的窗口遮挡。
涉及的函数:onPause()、onResume()
第三阶段:停止阶段
特征:Activity完全被遮挡,例如打开了一个新的Activity。
涉及的函数:onPause()、onStop()
当用户导航回到之前停止的Activity的时候,就会触发已经停止的Activity重新启动。
涉及的函数:onRestart()->onStart()->onResume()
如图:
onPause和onStop是我们启动另一个Activity的时候触发的
而onRestart,onStart,onResume是我们点击后退键的时候触发的
大家有兴趣的可以自己写代码测试。只需要像上面的代码一样,覆盖相应的声明周期函数,填入你想测试的代码就可以了。
贴上完整代码:
1 package com.aidevelops.activitys; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.util.Log; 7 import android.view.View; 8 9 public class MainActivity extends Activity { 10 11 @Override 12 protected void onCreate(Bundle savedInstanceState) { 13 super.onCreate(savedInstanceState); 14 setContentView(R.layout.activity_main); 15 Log.d("Active", "onCreate method started"); 16 } 17 18 @Override 19 protected void onResume() { 20 super.onResume(); 21 Log.d("Active", "onResume method started"); 22 } 23 24 @Override 25 protected void onStart() { 26 super.onStart(); 27 Log.d("Active", "onStart method started"); 28 } 29 30 @Override 31 protected void onPause() { 32 super.onPause(); 33 Log.d("Active", "onPause method started"); 34 } 35 36 @Override 37 protected void onRestart() { 38 super.onRestart(); 39 Log.d("Active", "onRestart method started"); 40 } 41 42 @Override 43 protected void onStop() { 44 super.onStop(); 45 Log.d("Active", "onStop method started"); 46 } 47 48 public void onClickStartActivity(View view) 49 { 50 Intent intent = new Intent(this, TargetActivity.class); 51 startActivity(intent); 52 } 53 54 }
View Code
那么知道这些东西对我们有什么作用,我们后面继续讲,因为博主已经累了,呵呵,大家都早点睡吧,早睡早起身体好,:-)
转载于:https://www.cnblogs.com/ai-developers/p/android_activity_lifecycle.html
android开发------Activity生命周期相关推荐
- Android笔记 activity生命周期 Tasks and back stack回退栈
正常打开一个应用,先后调用Activity的onCreate.onStart.onResume 正常退出一个应用,先后调用Activity的onPause.onStop.onDestroy(进程被杀死 ...
- HOME键窥探Android的Activity生命周期
HOME键窥探Android的Activity生命周期 好久没有写技术博客了,前两篇博客写的都是一些自己的所见所闻和心里感受,今天说一说Android中的Activity的生命周期,此篇文章使用HOM ...
- 监控android App Activity生命周期
说下场景: 1,监控当前应用生命周期 2,调试应用,接手一个庞大的应用,快速知道当前是那个activity ,或者 fragment(会在另一篇中讲) 3,如果你正常开发SDK ,当时你又想获取当前的 ...
- Android的Activity生命周期模拟程序及解析
当Activity处于Android应用中运行时,它的活动状态由Android以Activity栈的形式管理.当前活动的Activity位于栈顶.随着不同应用的运行,每个Activity都有可能从活动 ...
- 【Android】Activity生命周期
转载至:http://blog.csdn.net/liuhe688/article/details/6733407 子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者 ...
- Android的Activity生命周期以及模式
Activity生命周期 Activity启动:onCreate()->onStrat()->onResume(); 点击Home返回:onPause()->onStop() 新Ac ...
- 【Android】Activity生命周期(亲测)
测试手机:Nexus 5 系统:4.4 一.测试 测试代码: 1 package com.example.androidalarm; 2 3 import android.app.Activity ...
- ios+android+次留,边做iOS边学Android(三):Activity生命周期+通信
边做iOS边学Android(一):新建一个project 边做iOS边学Android(二):认识几个常用的控件 趁着不忙赶紧多写点,鬼知道后面又有什么需求要忙... 这次就看一下Activity的 ...
- Android:Activity生命周期
2019独角兽企业重金招聘Python工程师标准>>> 参考: <第一行代码:Android> 郭霖(著) Activity所在的栈为后进先出(Last In First ...
最新文章
- Spring JDBC详解
- angular 打印 lodop 引入css样式
- R语言基本操作函数(1)变量的基本操作
- python朋友圈为什么这么火-看我如何用Python发一个高逼格的朋友圈
- 控制台一直报错, [WDS] Disconnected!
- P3327 [SDOI2015]约数个数和 (mobius反演)
- PyFlink 开发环境利器:Zeppelin Notebook
- linux pid文件找不到,linux – 当’正确’时,PID文件是否仍有缺陷?
- python数据挖掘学习笔记】十三.WordCloud词云配置过程及词频分析
- 金三银四 | 吃透这套题,面试更有底气
- 如何以管理员方式管理文件
- 梅花雨的日历控件在ASP.NET2.0下不可用的解决方法
- 微星主板黑苹果_组装电脑哪个主板好?如何选择电脑主板?2020年电脑主板推荐及分析。...
- CSDN 原力 -- beta 测试中
- Matlab矩阵的运算
- WIN7的IE11中安装activex控件
- 手把手教你如何生成自己的二维码
- python解开压缩文件6位纯数字密码
- centos7查看进程ps_查看进程之ps命令
- 2012腾讯实习招聘笔试附加题1求解方法
热门文章
- 【读书笔记】沉默的大多数
- c语言程序设计教程 实验十,清华大学出版社-图书详情-《C语言程序设计实验教程》...
- lcx转发3389数据
- 打开VMware的系统出错
- 深入浅出无人机姿态,欧拉角,四元数,指数表示及数据转换与程序实现
- LeetCode每日一题 977. 有序数组的平方
- em算法怎么对应原有分类_[PRML]序列数据 HMM维特比算法及扩展
- weak_ptr指针编程实验
- 两个字符串的删除操作
- (转到C区)[献给想深入学习网络编程的朋友] C,C++网络编程学习简明指南