android基础知识复习(Activity及Fragment)

android基础知识复习(Activity及Fragment),第1张

概述    前一段时间完成了我的人生大事,Abp相关系列会暂时停止更新一段时间,准备趁着刚开始这段时间,复习一下android相关的基础知识,相关知识就以问题的方式记录下来,具体问题参考了厘米姑娘的相关博客。Activity的生命周期onCreate表示Activity正在创建,常做一些初始化工作,比

       前一段时间完成了我的人生大事,Abp相关系列会暂时停止更新一段时间,准备趁着刚开始这段时间,复习一下androID相关的基础知识,相关知识就以问题的方式记录下来,具体问题参考了厘米姑娘的相关博客。

Activity的生命周期
onCreate表示Activity正在创建,常做一些初始化工作,比如setContentVIEw界面资源,初始化数据等。
onStart表示Activity正在启动,可见却不在前台,无法与用户交互。
onResume表示Activity可见并处于前台,处于活动状态。
onPause表示Activity正在停止,可做数据存储、动画停止等 *** 作。
onStop表示Activity即将停止,可以做一些稍微重量级的回收工作,比如取消网络连接,注销广播接收器等。
onDestory表示Activity即将销毁,常做资源释放,回收工作。
另外,当Activity从后台切到前台,由不可见变为可见时,会调用onRestart方法,表示重新启动。

onStart和onResume/onPause和onStop的区别
具体参考Activity的生命周期,OnStart和OnStop都不可见,OnResume与OnPause都显示在前台。

Activity A启动了Activity B,会调用哪些方法?如果Activity B是完全透明的呢?如果Activity B是对话框呢?
依次会调用Activity A的OnPause方法——》Activity B的OnCreate方法——》Activity B的OnStart方法——》Activity B的OnResume方法——》Activity A的OnStop方法
如果Activity B是透明的或者Activity B是对话框,那么不会调用Activity A的onStop方法

onSaveInstanceState方法何时会被调用?onRestoreInstanceState何时被调用
当非人为终止Activity时,比如系统资源不足导致低优先级Activity被杀死时、或者应用配置发生改变时(比如横竖屏时),
Activity会调用OnSaveInstanceState方法来保存状态,该方法会调用在onStop方法之前,但和onPause方法没有时序关系。

当非人为终止的Activity要被重新展示时,系统会重新实例化这个Activity对象,并且从上次保存的bundle中读取保存的数据,恢复Activity的状态,onRestoreInstanceState必定在onCreate方法之后,在OnResume方法之前执行。
注:恢复状态也可以在OnCreate方法中执行,通过判断OnCreate方法的传参,但不推荐,手动删除这点。

onSaveInstanceState和OnPause的区别
可以从生命周期出发。
onSaveInstanceState用于临时性状态的保存,onPause用于数据的持久化保存。

如何避免Activity在横竖屏切换时被重新创建?
在AndroIDManifest.Xml中对应的Activity文件中,添加属性androID:ConfigChanges="orIEntation|screenSize",此后Activity被横竖屁切换时,就只会调用onConfigurationChange的方法,而不会被杀死再被重建。

Activity的四种启动模式?
Standard(标准模式):每次启动一个Activity就会创建一个新的实例。
Singletop(栈顶复用模式):如果启动的Activity处于栈顶,就不会创建新的对象,而会调用onNewIntent(intent)方法。
SingleTask(栈内复用模式):如果当前栈内存在此Activity的实例,则直接将此实例d到栈顶显示,并回调onNewIntent(intent)方法;如果不存在,则创建实例,并压入堆栈。
SingleInstance单实例模式:具有此模式的Activity只能放到一个栈中,且这个栈只能存放一个这一个实例。

Singletop和SingleTask适用场景?
Singletop:防止多次点击,同一个Activity被创建多个。
SingleInstance:一个栈中有且仅有一个,常用于主页登录页。

onNewIntent()方法何时被调用?
查看第七条Activity四种启动模式的Singletop和SingleInstance方法。

如何启动其他App的Activity?
在保证有权限的情况下,通过隐式意图的方式调用,只要与Activity的IntentFilter匹配即可(只要与Activity多组IntentFilter(包括Action、category和Data)中的一组匹配即可)。

Activity的启动过程?
    startActivity会经过重重方法会转移到ActivityManagerService的startActivity方法,并通过IPC(进程间通信)回到ActivityThread的内部类。
    ActivityThread中,并调用scheduleLaucheActivity方法将启动Activity方法的消息发送并交给Handle H进行处理。
    Handle H对消息的处理会调用handleLaunchActivity->perfoemLaunchActivity得以完成对Activity的创建和启动。

Fragment的生命周期?
onAttach->onCreate->onCreateVIEw->onActivityCreated->onStart->onResume->onPause->onPause->onStop->onDestoryVIEw->onDestory->onDetach,其中与Activity有很多相同的方法,不同的方法包括:
onAttach:当Fragment与Activity建立关联时调用
onCreateVIEw:当Activity创建视图时调用
onActivityCreate:当与fragment关联的Activity完成onCreate后调用
onDestoryVIEw:当Fragment中的布局被移除时调用
onDetach:当Activity与Fragment解除关联时调用

Activity与Fragment的异同点
相似点:Activity与Fragment都包含布局,有自己的生命周期,fragment可以看成迷你的Activity
不同点:1.Fragment依附于Activity,多了与Activity关联的相关方法,如Attach等
               2.Activity的生命周期是有宿主Activity调用而不是 *** 作系统调用的,从Activity生命周期是protect修饰,而Fragment生命周期是public修饰可以看出

Activity与Fragment的关系?
1.正如Fragment的名字“碎片”,他的出现为了解决安卓的碎片化,可以作为界面的组成部分,在Activity中动态的加入、交换和替换。
2.一个界面可以包含多个Fragment,一个Fragment也可以被多个界面使用
3.另外,Activity的FragmentManager负责调用队列中的Fragment的生命周期,保持fragment与Activity的状态和生命周期一致。

何时考虑使用Fragment?
比如VIEwPager+Fragment实现底部导航,比如横竖屏界面

总结

以上是内存溢出为你收集整理的android基础知识复习(Activity及Fragment)全部内容,希望文章能够帮你解决android基础知识复习(Activity及Fragment)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1109157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存