| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 安卓相关知识 -> 正文阅读 |
|
[移动开发]安卓相关知识 |
Activity(活动)是一个为实现交互而提供的Android应用组件。每个Activity都有一个窗口,该窗口可以全屏幕填充,也可以是一个小窗口浮动在其他窗口上。一个应用程序通常由多个Activity组成,它会指定应用程序中的某个Activity作为主Activity,这意味着当用户第一次启动应用程序时呈现给用户的活动,并且Activity可以相互跳转来执行不同的操作。 2、Activity的生命周期? 在正常情况下,一个Activity从启动到结束会以如下顺序经历整个生命周期: (1) Oncreate():创建:作为生命周期的第一种方法,仅在新的Activity创建时调用。在这个方法中,可以做一些初始化工作,比如加载接口布局资源和初始化活动所需的数据。 (2) OnStart():开始:表示Activity正在启动,并且即将启动。此时Activity已经出现,我们可以看到了,但还没有出现在前台,我们还不能交互。 (3) OnResume():活动:表示Activity已经出现在前台,可见可操作。 (4) OnPause():暂停:表示活动即将停止,仍然可见,但是不能操作了。 (5) OnStop():停止:表示活动停止,此时不可见,位于后台。 (6) OnDestory():销毁:表示活动即将被销毁。这是Activity循环的最后一个回调。你可以做一些回收工作和最后的资源回收。 最后介绍第七个生命周期onRestart: (7) OnRestart():表示Activity重启。在正常情况下,当Activity从不可见状态切换到可见状态,也就是onStop()到onStart()之间,就会调用OnRestart()。这种情况一般是由用户行为引起的。例如,用户在这个活动切换到桌面或打开另一个新的活动,然后用户返回到这个活动。 2.1 生命周期的几种常见情况①启动ActivityA:onCreate()->onStart()->onResume() ②打开新的ActiviyB的时候,上述ActivityA的回调如下:onPause()->onStop() ③接着再次回到原ActivityA时,ActivityA的回调如下:onRestart()->onStart()->onResume() ④按back键回退ActivityA时,ActivityA的回调如下:onPause()->onStop()->onDestory() ⑤在第四个步骤不按back,而是按Home键切换到桌面后又回到该ActitiyA,ActivityA的回调如下:onPause()->onStop()->onRestart()->onStart()->onResume() ⑥调用finish()方法后,ActivityA的回调如下:onDestory() 3、切换横竖屏时,Activity的生命周期变化正常情况下,切换横竖屏后,Activity会被销毁并重新创建,然而大部分情况,我们并不希望重新走一遍生命周期。那么我们来看看以下几种情况: 3.1 正常情况重新走一遍生命周期:onPause()->onSaveInstanceState()-> onStop()->onDestroy()->onCreate()->onStart()->onRestoreInstanceState->onResume() 其中onSaveInstanceState和onRestoreInstanceState是两个重要的回调函数。当Activity异常退出时,系统调用onSaveInstanceState()来保存Activity当前状态。同样的,当该Activity重新创建时,会调用onRestoreInstanceState()来恢复之前的状态。 3.2 配置 android:configChanges可以通过在AndroidManifest里配置android:configChanges,来避免切换横竖屏时Activity重新走生命周期。
此时切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法,在该方法就可以执行其他动作啦。 注意:设置Activity的android:configChanges=”orientation”时,切屏还是会调用各个生命周期,切换横竖屏只会执行一次。 4、Activity的启动模式一个应用程序一般包含多个Activity,多个Activity的管理是按照每个Acitivity打开的顺序排列在返回栈(Back Stack)中,并遵循“后进先出”的规则。通常情况下,当前一个ActivityA启动一个新的ActivityB时候,新的ActivityB会被加入返回栈中,并处于栈顶,获取屏幕焦点,而前一个ActivityA仍保留在返回栈中,处于停止(onStop)状态。 ActivityA停止时,如上所说,系统会调用onSaveInstanceState和onRestoreInstanceState保存其页面状态。当用户返回时候,当前处于栈顶的ActivityB会从返回栈中弹出,并被销毁(onDestroy),恢复前一个ActivityA的状态。 4.1 四大启动模式上一段讲述的正是最常见的默认启动模式:Standard(标准模式),四大启动模式分别是:
Standard默认的启动模式,新启动的Activity放入返回栈栈顶,遵循先进后出原则,同一个Activity可以被实例化多次。 singleTop进一步思考,如果同一个ActivityA被实例化5次,那么栈顶就有5个ActivityA,但我们希望如果栈顶已经是ActivityA时,新创建一个ActivityA就不要重新实例化新的ActivityA,而是用此时栈顶的ActivityA。那么就可以用SingleTop模式,分为下面两种情况:
singleTask单任务模式就是指一个栈里面只有一个指定的Activity。而且通常会和taskAffinity配合使用。
affinity就是亲和力的意思,我们可以设置希望ActivityA在com.android.task这个栈里打开,那么就分为以下3种情况:
注意:如果只是指定了android:taskAffinity属性,但是启动模式没有指定为Singletask模式,新启动的Activity依然会在原来的返回栈中。 SingleInstance这是Singletask的升级版,创建SingleInstance启动模式的Activity时,系统都会直接创建一个新的返回栈并创建Activity的新实例置于新Task返回栈中,有两点要注意:
4.2 进阶题:谈谈四大启动模式对应的使用场景//TODO 4.3 如何设置启动模式我们可以通过在AndroidManifest.xml配置Activity的启动模式。
或者直接在代码里设置:
注:第二种方法设置启动模式的优先级高于第一种,如果两者都存在,以第二种为准。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/10 9:49:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |