Android四大组件--活动(Activity)
1. 概念
说明:
1). 创建和销毁 onCreate 和 onDestory
应用场景:当界面销毁的时候存储一些数据,在onCreate创建的时候回显数据;
例如:发短信:写短信写到一半,按home键退出不发送(这个时候进入onDestory,保存未发送的短信),然后再进入短信(在onCreate中把之前保存的信息读取出来),就可以看到未发送的短信显示出来
2). 可见和不可见 onStart 和 onStop
注意:如果一个界面被最小化了,那么是不会调用onDestory方法的。仅仅是调用了onStop方法
应用场景:当界面不可见的时候,进入onStop,当界面可见的时候,进入onStart
例如:正在看视频,这个时候来了一个电话,视频被打断(这个时候进入onStop,用来暂停视频播放),挂断电话,视频界面重新回来了(这个时候进入onStart,再次启动视频播放),继续视频播放。
3). 获取焦点和失去焦点 onResume 和 onPause
注意, 如果一个界面还能看得见,但是失去了焦点,那么它的生命周期只会调用onPause.不会调用onStop
应用场景 : 一般用作游戏的暂停,在游戏的界面上覆盖住一个透明的界面,那下面的界面能看到,但是不可交互。
生命周期的总结
完整的生命周期
onCreate--onStart--- onResume---onPause--onStop---onDestory
可视生命周期
onStart--onResume--onPause--onStop
前台生命周期
onResume--onPause
2. 代码
public class MainActivity extends AppCompatActivity { //创建:无界面
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("onCreate");
} //开始有界面了
@Override
protected void onStart() {
super.onStart();
System.out.println("onStart");
} //获得焦点了
@Override
protected void onResume() {
super.onResume();
System.out.println("onResume");
} //失去焦点
@Override
protected void onPause() {
super.onPause();
System.out.println("onPause");
} //界面消失
@Override
protected void onStop() {
super.onStop();
System.out.println("onStop");
} //完结
@Override
protected void onDestroy() {
super.onDestroy();
System.out.println("onDestroy");
}
}
现象:
点击进入时:
3. 四种启动模式
一般我们就使用默认的,最多再使用单一顶部模式;
1. standard -标准模式,默认的启动模式
只要这个界面被启动多少次就会产生多少个实例被压到栈里面。
2. singleTop- 单一顶部模式
如果哪一个activity设置了这种模式,但凡它位于栈顶,也就是显示在屏幕上给用户,如果还想启动它,是不会再创建新的实例了。还是使用栈顶的这个实例。
应用场景:为了避免自己启动自己,出现一些奇怪的现象。---短信编写界面
3. singleTask---单一任务模式
如果哪一个activity设置了这种启动模式,假设以前已经在栈中存在过实例,那么接下来将不会再次创建它的实例,而是把以前的实例直接移动到栈顶显示,并且把它与栈顶之间的实例全部销毁。
应用场景:如果哪一个界面非常的消耗内存和CPU,一般做成singleTask启动模式 :浏览器界面
4. singleInstance ---全局唯一模式(单例模式)
如果哪一个activity设置了这种启动模式,那么它创建出来的实例会单独存放在一个栈中,并且这个栈有且只能有它自己一个实例对象,如果以后还要启动这个activity,那么要做的仅仅是交替显示不同的栈而已。
4. 横竖屏切换
1. 直接硬编码当前界面显示的是横屏还是竖屏
android:screenOrientation="portrait/landscape"
2. 根据手机方向不同而显示不同的画面
android:configChanges="keyboardHidden|screenSize|orientation"
Android四大组件--活动(Activity)的更多相关文章
- Android四大组件之Activity(活动)及其布局的创建与加载布局
Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...
- Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com [Andro ...
- Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)
如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com ...
- 【Android开发日记】之入门篇(四)——Android四大组件之Activity
在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页 ...
- Android四大组件及activity的四大启动模式
Android四大组件 1. 广播接收者的两种类型: (1)系统广播接收者,就是继承BroadcastReceiver这个类,然后还要在清单文件中注册,注册之后给他一个action.当系统发生了这个a ...
- Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)
什么是Activity 关键字:应用组件.四大组件.用户界面,交互. An Activity is an application component that provides a screen wi ...
- Android 四大组件之 Activity(二)
1.综述 Activity是Android四大组件(Application Components)之一,简单来说Activity就是平常所见到的用户界面,一般情况下,一个Activity所占的窗口是满 ...
- 入职小白随笔之Android四大组件——活动详解(activity)
推荐Android入门书籍:第一行代码(郭霖) google官方文档地址:https://developer.android.google.cn/guide/components/activities ...
- Android 四大组件之 Activity
1 简介 Activity (活动) 即应用程序 显示的 界面.可以通过两种方式 设置显示的内容 1:纯代码方式 2:xml 布局方式 无论哪一种方式,都是通过 setContentView 来设置显 ...
- Android 四大组件之一(Activity)
Activty的生命周期的也就是它所在进程的生命周期. 一个Activity的启动顺序: onCreate()——>onStart()——>onResume() 当另一个Activity启 ...
随机推荐
- manual start user profile import
2 Sign in to vote Thanks Trevor, Finally created the task scheduled with this command: Sync Incremen ...
- TestNG参数化之@DataProvider传参
@parameters适合传递简单少量参数,复杂参数一般使用@DataProvider传递 @DataProvider语法: @DataProvider(name = "dataprovid ...
- SpringMvc date数据传递处理
1.form表单提交date数据 form表单提交的date数据要在接收的字段上加入@DateTimeFormat注解 @DateTimeFormat(pattern = "yyyy-MM- ...
- [转] Cisco路由器DNS配置
禁用Web服务 Cisco路由器还在缺省情况下启用了Web服务,它是一个安全风险.如果你不打算使用它,最好将它关闭.举例如下: Router(config)# no ip http server 配置 ...
- Azure CLI2.0 捕获Linux ARM非托管磁盘虚拟机并创建ARM托管磁盘虚拟机
1.系统内部取消预配VM,创建了测试文件目录及文件:hlm20180904/ hlm20180904.txt 2.使用CLI2.0创建VM映像 a.登陆CLI2.0 备注:在 Azure 中国区使用 ...
- javasript 的DOM 节点操作:创建,插入,删除,复制以及查找节点
DOM 含义: DOM 是文档对象模型(Document Object Model) 是一种基于浏览器编程的一套API 接口,我W3C 出台推荐的标准.其赋予了JS 操作节点的能力,当网页被加载时,浏 ...
- UITableView 头部效果/放大/移动跟随效果
[self.tableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOp ...
- python 异步IO(syncio) 协程
python asyncio 网络模型有很多中,为了实现高并发也有很多方案,多线程,多进程.无论多线程和多进程,IO的调度更多取决于系统,而协程的方式,调度来自用户,用户可以在函数中yield一个状态 ...
- 论文分享NO.4(by_xiaojian)
论文分享第四期-2019.04.16 Residual Attention Network for Image Classification,CVPR 2017,RAN 核心:将注意力机制与ResNe ...
- HLS:OpenCV和RTL代码转换关系
OpenCV 图像处理是基于存储器帧缓存而构建的, 它总是假设视频帧数据存放在外部 DDR 存储器中. 由于处理器的小容量高速缓存性能的限制, 因此, OpenCV 访问局部图像性能较差. 并且, 从 ...