Activity的创建、生命周期
Activity是Android四大组件之一。一个Activity负责管理一个界面。
创建一个Activity:
New -> Activity -> 选择要创建的Activity类型(一般我们选Empty/Basic Activity)

AS会自动在AndroidManifest.xml文件中注册新建的Activity,不用我们手动注册。
Activity的生命周期分为5种状态:
1、启动状态
启动状态很短,启动后便会进入运行状态。
2、运行状态
Activity处于屏幕最前端,可见、有焦点,可与用户交互。
Android系统会尽可能保持处于运行状态的Activity的运行,如果内存不足,Android会优先销毁栈底的Activity,来保证运行状态的Activity的运行。
3、暂停状态
Activity对用户仍然可见,但它无法获取焦点,不会响应用户的操作。
例如:Activity上覆盖了一个透明的或者非全屏的Activity时,被覆盖的Activity就处于暂停状态。
4、停止状态
Activity完全不可见,但任然保留着当前状态和成员信息。
如果系统内存不足,停止状态的Activity很容易被销毁。
5、销毁状态
Activity被清理出内存。
Activity生命周期对应的方法:
1、onCreate() 在创建Activity时调用,做一些初始化设置。此方法用得很多。
2、onStart() 在Activity即将可见时调用
3、onResume() 在Activity获取焦点、开始可见时调用
4、onPause() 当Activity被其它Activity覆盖或锁屏时调用
5、onStop() 当Activity对用户不可见时调用
6、onDestroy() 在Activity销毁时调用
7、onStart() 在Activity从停止状态再次启动时调用
当Activity执行onPause()进入暂停状态,重新回到前台运行时会先调用onResume();
当Activity执行onStop()进入停止状态不可见,重新回到前台运行时会先调用onRestart();
停止状态的Activity很容易被销毁,内存不足时,暂停状态的Activity也可能被销毁,如果暂停、停止状态的Activity已被销毁,重新回到前台运行会先调用onCreate()。
在进行横竖屏切换时,会先销毁Activity,再重建Activity。
如果不希望横竖屏切换时销毁重建Activity,可以在AndroidManifest.xml的该Activity中通过configChanges属性设置:
<activity
android:name=".Activity2"
android:label="@string/title_activity_2"
android:theme="@style/AppTheme.NoActionBar"
android:configChanges="orientation|keyboardHidden|screenSize"> <!-- 横竖屏切换时不销毁重建此Activity-->
6 </activity>
如果希望某个界面一直处于横屏/竖屏状态,不随手机的晃动而改变,可以在AndroidManifest.xml的该Activity中通过 screenOrientation 属性设置:
<activity
android:name=".Activity2"
android:label="@string/title_activity_2"
android:theme="@style/AppTheme.NoActionBar"
android:screenOrientation="portrait"> <!-- 一直处于竖屏状态-->
</activity>
竖屏是portrait,横屏是landscape。
Activity的创建、生命周期的更多相关文章
- Android Small插件化框架解读——Activity注册和生命周期
通过对嵌入式企鹅圈原创团队成员degao之前发表的<Android Small插件化框架源码分析>的学习,对Android使用的插件化技术有了初步的了解,但还是有很多需要认真学习的地方,特 ...
- Activity完整的生命周期
首语:群里看到一位网友说:你能说出Activity的完整生命周期吗?看到这句话,我也在反思自己,我也是个fresh,所以想找个时间仔细的扒一扒Activity生命周期. 首先拿一张简单而又复杂的生命周 ...
- 多个Activity交互的生命周期:
一.多个Activity交互的生命周期: A Activity打开B Activity的时候: A Activity B Activity ...
- 三张图让你高速明确activity与fragment生命周期的异同点
第一张图:activity的生命周期 第二张图:fragment的生命周期 第三张图:activity与fragment生命周期对照 补充:假设你还是不明确,请翻译一下你不理解的相应单词. ----- ...
- Activity组件的生命周期
一.Activiy组件的三个状态: 1.前台状态(active) : 在屏幕的最上层,页面获得焦点,可以响应用户的操作2.可视状态(paused) : 不能与用户交互,但是还存在于可视区域内,它依然存 ...
- 浅谈Android的Activity运行流程(生命周期)
关于Android的Activity运行流程,我们可以写一些程序来直观的查看Activity的运行流程.在这里我们使用Log工具来获取Activity运行日志.假如我们新建一个Android项目,Pr ...
- android:activity活动的生命周期
掌握活动的生命周期对任何 Android 开发者来说都非常重要,当你深入理解活动的生命 周期之后,就可以写出更加连贯流畅的程序,并在如何合理管理应用资源方面,你会发挥的 游刃有余.你的应用程序将会拥有 ...
- Android零基础入门第75节:Activity状态和生命周期方法
前面两期我们学习了Activity的创建和注册.以及启动和关闭,也学会了重写onCraete方法,这些知识在实际开发中远远不够,还需要学习了解更多. 生命周期就是一个对象从创建到销毁的过程,每一个对象 ...
- Activity与Service生命周期
一. Activity 先展示一张Activity的生命周期图: 1.1 Activity状态 只有下面三个状态是静态的,可以存在较长的时间内保持状态不变.(其它状态只是过渡状态,系统快速执行并切换到 ...
- Activity详解生命周期(Android)
Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之 ...
随机推荐
- Vue.js新手入门指南
最近在逛各大网站,论坛,以及像SegmentFault等编程问答社区,发现Vue.js异常火爆,重复性的提问和内容也很多,楼主自己也趁着这个大前端的热潮,着手学习了一段时间的Vue.js,目前用它正在 ...
- Android中的ProgressBar的android:indeterminate
不明确(false)就是滚动条的当前值自动在最小到最大值之间来回移动,形成这样一个动画效果,这个只是告诉别人“我正在工作”,但不能提示工作进度到哪个阶段.主要是在进行一些无法确定操作时间的任务时作为提 ...
- Redis和StackExchange.Redis
redis有多个数据库1.redis 中的每一个数据库,都由一个 redisDb 的结构存储.其中,redisDb.id 存储着 redis 数据库以整数表示的号码.redisDb.dict 存储着该 ...
- UVA-11082 Matrix Decompressing(有上下界的最大流)
题目链接: Matrix Decompressing 题意: 给一个矩阵的每行和每列的和,(给的是前i行或者列的和); 矩阵中每个元素的值在1到20之间,找出这样的一个矩阵: 思路: 把它转化成一个二 ...
- java -- 虚拟机和内存
从大方向来分:栈内存,堆内存,方法区,本地方法栈,程序计数器 java从存储数据的角度来分: 寄存器(register):最快的存储区,由编译器根据需求进行分配,不由认为控制. 堆栈(statck): ...
- BZOJ_2726_[SDOI2012]任务安排_斜率优化+二分
BZOJ_2726_[SDOI2012]任务安排_斜率优化+二分 Description 机器上有N个需要处理的任务,它们构成了一个序列.这些任务被标号为1到N,因此序列的排列为1,2,3...N.这 ...
- 【SCOI 2009】 Windy数
[题目链接] 点击打开链接 [算法] 数位DP,注意处理前导零的情况 [代码] #include<bits/stdc++.h> using namespace std; #define M ...
- Cocos2d-X对常用Object-C特性的替换
平台的转换,总是让我们不自觉的去寻找两者的相同处,不过Cocos2d-X的确对很多Object-C的特性进行了模仿性质的封装,使熟悉Object-C的人能够在其中看到很多类似的概念而感到亲切. ...
- Laravel实践-自定义全局异常处理
在做API时,需要对一些异常进行全局处理 百牛信息技术bainiu.ltd整理发布于博客园比如添加用户执行失败时,需要返回错误信息 // 添加用户 $result = User::add($user) ...
- [转]Python+Selenium之expected_conditions:各种判断(上)
原文地址: https://www.jianshu.com/p/f3189f1951cc 其他类似文章: https://www.cnblogs.com/yuuwee/p/6635652.html h ...