Android复习(六)核心组件—>Activity 简介、生命周期、状态变更
1. 可以在activity上声明权限,来保证只在进入某个activity是否有某种权限
<manifest>
<activity android:name="...."
android:permission=”com.google.socialapp.permission.SHARE_POST” />
2.生命周期流程图
3.activity状态和内存中弹出
系统永远不会直接终止 Activity 以释放内存,而是会终止 Activity 所在的进程。系统不仅会销毁 Activity,还会销毁在该进程中运行的所有其他内容。
| 系统终止进程的可能性 | 进程状态 | Activity 状态 |
|---|---|---|
| 小 | 前台(拥有或即将获得焦点) | 已创建 已开始 已恢复 |
| 中 | 后台(失去焦点) | 已暂停 |
| 大 | 后台(不可见) | 已停止 |
| 空 | 已销毁 |
4. 保存数据和回复数据
当activity销毁时,应该调用 onSaveInstanceState()
当需要恢复数据时,应该调用 onRestoreInstanceState() 而不要在onCreat中处理这些事情,虽然得到的bundle对象是相同的
5. Activity状态变更
5.1 配置发生了改变
有很多事件会触发配置更改。最显著的例子或许是横屏和竖屏之间的屏幕方向变化。其他情况,如语言或输入设备的改变等,也可能导致配置更改。
当配置发生更改时,Activity 会被销毁并重新创建。原始 Activity 实例将触发 onPause()、onStop() 和 onDestroy() 回调。系统将创建新的 Activity 实例,并触发 onCreate()、onStart() 和 onResume() 回调。
结合使用 ViewModels、onSaveInstanceState() 方法和/或持久性本地存储,可使 Activity 的界面状态在配置发生更改后保持不变。在决定这些选项的组合方式时,需要考虑界面数据的复杂程度、应用的用例以及检索速度与内存使用的权衡。有关保存 Activity 界面状态的详情,请参阅保存界面状态。
5.2 处理多窗口的情况
一旦应用进入多窗口模式(适用于 Android 7.0(API 级别 24)及更高级别),系统会向当前运行的 Activity 发送配置更改通知,从而完成上述生命周期转换。如果已经处于多窗口模式的应用调整了大小,也会出现这种行为。您的 Activity 可以自行处理配置更改,也可以让系统销毁 Activity 并使用新维度重新创建一个。
有关多窗口模式生命周期的详情,请参阅多窗口模式支持页的多窗口模式生命周期部分。
在多窗口模式下,虽然用户可以看到两个应用,但只有与用户交互的应用位于前台且具有焦点。该 Activity 处于“已恢复”状态,而另一个窗口中的应用则处于“已暂停”状态。
当用户从应用 A 切换到应用 B 时,系统会对应用 A 调用 onPause(),对应用 B 调用 onResume()。每当用户在应用之间切换时,系统就会在这两种方法之间切换。
有关多窗口模式的详情,请参阅多窗口模式支持。
5.3 Activity或对话框显示在前台
如果有新的 Activity 或对话框出现在前台,并且局部覆盖了正在进行的 Activity,则被覆盖的 Activity 会失去焦点并进入“已暂停”状态。然后,系统会调用 onPause()。
当被覆盖的 Activity 返回到前台并重新获得焦点时,会调用 onResume()。
如果有新的 Activity 或对话框出现在前台,夺取了焦点且完全覆盖了正在进行的 Activity,则被覆盖的 Activity 会失去焦点并进入“已停止”状态。然后,系统会快速地接连调用 onPause() 和 onStop()。
当被覆盖的 Activity 的同一实例返回到前台时,系统会对该 Activity 调用 onRestart()、onStart() 和 onResume()。如果被覆盖的 Activity 的新实例进入后台,则系统不会调用 onRestart(),而只会调用 onStart() 和 onResume()。
注意:当用户点按“概览”或主屏幕按钮时,系统的行为就好像当前 Activity 已被完全覆盖一样。
5.4 用户点击返回按钮
如果 Activity 位于前台,并且用户点按了返回按钮,Activity 将依次经历 onPause()、onStop() 和 onDestroy() 回调。活动不仅会被销毁,还会从返回堆栈中移除。
需要注意的是,在这种情况下,默认不会触发 onSaveInstanceState() 回调。此行为基于的假设是,用户点按返回按钮时不期望返回 Activity 的同一实例。不过,您可以通过替换 onBackPressed() 方法实现某种自定义行为,例如“confirm-quit”对话框。
如果您替换 onBackPressed() 方法,我们仍然强烈建议您从被替换的方法调用 super.onBackPressed()。否则,返回按钮的行为可能会让用户感觉突兀。
5.5 系统终止应用程序
6.
Android复习(六)核心组件—>Activity 简介、生命周期、状态变更的更多相关文章
- Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com [Andro ...
- Android应用程序中Activity的生命周期
Android应用程序中Activity的生命周期 对于Android来说Activity的生命周期是非常的重要,尤其是对于新学者来说,只有充分了解了Activity的生命周期,才能写出优良用户体验的 ...
- android学习四(Activity的生命周期)
要学好活动(Activity).就必需要了解android中Activity的声明周期.灵活的使用生命周期.能够开发出更好的程序,在android中是使用任务来管理活动的,一个任务就是一组存放在栈里的 ...
- 【Android】11.1 Activity的生命周期和管理
分类:C#.Android.VS2015: 创建日期:2016-02-21 一.基本概念 1.必须理解这些方法,否则你编的程序根本就没法在实际项目中使用 当然,如果仅仅是为了玩玩,或者仅仅是作为例子为 ...
- Android艺术——深看Activity的生命周期
探究Activity的生命周期 1.典型情况下的生命周期分析:onCreate 初始化工作,加载布局资源和数据:onStart ac正在启动但是无法交互,后台:onResume ac可见,显示在前台: ...
- 朝花夕拾-android 自定义application 管理activity的生命周期
为了安全退出多个已创建的activity? 可以自定义application:myapplication. 增加一个list成员保存,一些关键的已创建的activity实例: private List ...
- 第三章:Activity的生命周期
一:Activity的生命周期方法 Android提供了很多Activity的生命周期方法,比如我们常用的onCreate.onPause.onResume等.这里主要介绍粗粒度的周期方法,诸如onP ...
- Android中Activity的生命周期
简介: 这个基本是必问的问题了,说一下你对Activity生命周期的理解,呵呵… onCreate, onStart, onResume, onPause, onStop, onDestroy, on ...
- android学习——activity的生命周期
Android中主要组件之Activity的生命周期,基本都是翻译Android API和个人的理解. 首先看一下Android api中所提供的Activity生命周期图: Activity其实是继 ...
- Android开发之Activity的生命周期以及加载模式
本篇博客就来好好的搞一下Activity的生命周期,如果搞过iOS的小伙伴的话,Activity的生命周期和iOS中ViewController的生命周期非常类似.生命周期,并不难理解.一个人的生命周 ...
随机推荐
- 【Vue2】Filter 过滤器
过滤器案例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- 【Java】MuliThread 多线程
程序Program 是完成特定人,用某种语言编写的一组指令集合,即一段静态代码,静态对象 进程Process 是程序的一次执行过程,可以是一个正在执行的程序 - 程序是静态的,进程是动态的 - 进程是 ...
- 在docker 容器开启ssh , 并映射22端口到物理载体机上以使外网访问
1. 运行某镜像以启动容器 docker run -it -p 127.0.0.1:5000:22 c7fe6d9267f8 /bin/bash -p 为指定端口, 127.0.0.1 为映射到的物 ...
- MPI4PY的数据类型 —— MPI4Py data type
原文地址: http://education.molssi.org/parallel-programming/03-distributed-examples-mpi4py/index.html MPI ...
- obs 直播软件 虚拟摄像头插件 —— obs-virtualcam
如题: 外网下载地址: https://github.com/Fenrirthviti/obs-virtual-cam/releases 这个东西是做啥用的这里就不讲了,这个东西的资源不好找,找了好半 ...
- vue开发者工具dev-tool的安装
1.下载网址:https://github.com/Redxym/dev-tools 2.谷歌浏览器->扩展程序,拖动刚刚下载好的压缩包,将chrome文件夹添加至'加载已解压的扩展程序' // ...
- 2023 ICPC 杭州游记
题解 省流:三个 NOI 银牌合成一个 ICPC 区域赛银牌 感谢 gjy 的铜钱剑 和 hszx 的大家玩得很开心 两个联赛数据结构没做出来
- CentOS 7.3离线安装 JDK
1.下载对应的JDK版本 # 网盘链接:https://pan.baidu.com/s/1HMCJis-FEicIcDTgbksBnQ # 密码:q65m 2.查看原系统jdk版本 [bw@local ...
- 解决gedit报错无法打开的问题
彻底解决关于gedit的Unable to init server: 无法连接: 拒绝连接_BD_Marathon的博客-CSDN博客_unable to init server: 无法连接: 拒绝连 ...
- 玄机蓝队靶场_应急响应_02:apache日志分析
日志分析这块,感觉都是对grep.awk.sort.wc.uniq,这几个命令的使用. 一:靶场 (1)直接cd到linux日志, cd /var/log 发现apache2目录, cd ./apac ...