做Android的同学说起Activity,那绝对是熟悉的不能再熟悉了,但是越熟悉的东西往往越陌生。我们真的了解她吗?她是我们所认识的那样吗?或许是,或许不是!了解与否,让我们往下看。首先借Android官网的这张图来展现Activity的生命周期,这张金字塔图比起那张所有书上都有的生命周期流程图绝对要来的爽快:
从上图可以看到,最右边下方的Android机器人代表启动一个Activity,经过一系列的操作和过程,经过三个生命周期回调方法,到达金字塔的顶层,爬到顶层就可以供用户操作了。然后从金字塔顶往下,再经过三个生命周期方法,就又到了金字塔的另一边底层,Activity就销毁了。但是当下金字塔的时候,只要没到最下面,都有通道可以回到最顶层。这有几点或许是平时我们没有注意的:
1.Activity在onStart方法调用后,就处于可见状态了(visible)
2.当经过onPause方法后处于暂停状态(Paused),这时Activity处于半透明状态,为不可操作的,比如弹出一个模态框。这时Activity不会执行任何代码
3.Activity在调用onStop方法后即处于用户不可见的状态了(invisible)
4.onCreate方法在整个生命周期只会被调用一次
5.自定义Activity继承Activity类后有没有需要必须实现的方法?答案是没有,但是要想启动和显示一个Activity,就必须实现onCreate方法并指定布局文件
6.大部分的清理操作应该在onPause和onStop中执行,如果在onCreate中开启了耗时线程或耗资源的线程操纵,应该在onDestroy中杀死线程
官方文档中有这么一段注释值得我们注意:
Note:The
system callsonDestroy()
after
it has already calledonPause()
andonStop()
in
all situations except one: when you callfinish()
from
within theonCreate()
method.
In some cases, such as when your activity operates as a temporary decision maker to launch another activity, you might callfinish()
from
withinonCreate()
to
destroy the activity. In this case, the system immediately callsonDestroy()
without
calling any of the other lifecycle methods.
系统一般都是在执行完onPause和onStop方法后再执行onDestroy方法,但是当在onCreate方法中调用了Activity的finish()方法后,比如在onCreate方法里启动新的Activity并调用了finish方法,这时系统会直接调用onDestroy方法!
以上就是关于Activity一些你可能不知道或是忽视的,欢迎大家补充交流!
加入我们的或微信公众账号请查看:Ryan's
zone公众账号及
分享到:
相关推荐
这几天一直都在捣鼓android的知识点,兴趣班的老师,讲课太过深奥,天(想到什么就见什么,后后面完全不想听),最后自己找资料总结了在Android学习中很重要的一个组件Activity,那就开始吧! 第一:掌握Activity的四...
后期一个一个加2 ActivityAttacher的使用 (1) manifestmanifest里只需要声明:主Activity有特殊需求的Activity,如支持旋转模板Activity,暂时只支持一个启动模式对应一个模板Activity模板Activity有几个默认配置项...
之前的某位大神的闹钟源代码,只是我只需要其中的闹钟周/时/分定时,所以就抠出来,自己用作定时设置,循环周,到点会把数据广播发送到主Activity
我们首先要知道的是activity是“后进先出”的栈结构,通俗点讲就像羽毛球筒,你想拿到下面的羽毛球就要先拿掉上面那几个。 随后,来详细认识下任务栈吧。这玩意要从一个叫TaskAffinity的参数说起,这个参数表示一...
趁着工作之余,看了一下intent,发现好多知识都已经忘记了,然后自己有重新复习了一遍,在这里做一下笔记,以下为自己总结的几点: intent是一个好东西 他可以启动Activity还可以回调数据 调用各种数据,联系人...
主要是Fragment的几个实用技术点 一、Fragment页面状态保存方式。 二、解决重新跳转回含有若干个Fragment的Activity时,指定显示第几个Fragment。 三、实现底部首页四个按钮的Fragment避免重复创建对象方法。
这几点在PluginTest示例工程中有体现。 11、插件开发模式 插件UI可通过fragment或者activity来实现 如果是activity实现的插件,则最终会在PluginProxyActivity中运行 如果是fragment实现的插件,又分为两种 1...
[toc] EasySports 声明 本项目部分API来自NBA中文官网与虎扑体育,纯练手之作,...这里只说其中几点(也包括一下自定义View) 一个基于MVP的快速开发基类库rbase Activity和Fragment的常用封装,结合RxJava 异常收集类
之后会展开对每一个功能点进行详细的说明,这几个模块是我自己根据项目的积累所认为的一些有必要的封装。 注:建议以Module的方式引入,这样方便根据自己项目情况进行调整。 这里没有太多的使用指南,更多是在Sample...
1. 请描述下Activity的生命周期。 2. 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态? 3. 如何将一个Activity设置成窗口的样式。(Edited by Sodino) 4. 如何退出Activity?如何安全...
https://github.com/af913337456/WeChatVideoView功能点如果你看完上面的gif图,你会发现如下几点功能 (Function list):1,直观的播放前,可以显示封面缩略图播放时,如果还没有本地缓存,那么先进行下载下载过程中...
github地址点这里关于kotlin的配置就不过多说了,网上好多教程(最近kotlin好火)布局就是一个recyclerviewmainactivity代码:可以看到就一个初始化布局管理器和设置适配器的代码没什么了(你说没看到初始化控件?...
FrameLayout:里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角 6. 请介绍下Android的数据存储方式。 答:SharedPreferences键值对的存储 SQlite数据库存储 Files文件存储 NetWork...
� Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的有限子集,尚不承诺遵守 Java 任何 Java 规范 , 可能会造 成J ava 阵营的进一步分裂。 � 现有应用完善度不太够,需要的开发工作量较大。--------------------...
Viewport不局限于浏览器可视区域的大小,可能比浏览器的可视区域要大,也可能比浏览器的可视区域要小。 媒体查询 CSS媒体查询允许开发者基于浏览网站的设备的特性来应用不同的样式申明,最常用的特性是视口宽度。 ...
Android应用级小知识一、关于onConfigurationChanged()的几点小知识Android中横竖屏(landscape是横向,portrait是纵向)切换时:没有调用onConfigurationChanged(),Activity执行过程为:onPause()—>onStop()—>...
附件是演示工程文件,有几点要说明下: 1. 修改一下BLOCKED_NUMBER这个变量值,把它设置为你要测试拦截的电话号码。 2. 全部功能是在一个Activity里实现的,所以大家要先运行这个Activity,然后点击“设置呼叫转移...
好了上面介绍了之前准备的知识点后今天我们做一个真正的可运行的启动插件demo,要知道一个插件可能是随时从网上下载下来的,那么也就是说其实这个apk不会被安装,那么如果不被安装,怎么能被加载呢, 又如何管理插件...
如果你觉得只有一个ListView的界面太突兀,你可以为这个ListActivity指定一 个Layout,需要注意的是,你需要提供一个id为@android:id/list的ListView控件,避 免Activity在内部偷偷寻找该控件的时候失败。...
作者SpikeKing,源码TestWebIntent,人们每天都要访问大量的手机网页, 如果把...本文主要有以下几点: (1) 如何在Web中发送原生的Intent消息. (1) 如何加载本地的HTML页面到浏览器. (2) 如何创建半透明的Activity页面.