Activity16问

  1. 横竖屏切换时Activity生命周期
    在这里插入图片描述
    注意:还有一点,非常重要,一个 Android 的变更细节!当 API >12 时,需要加入 screenSize 属性,否则屏幕切换时即使你设置了 orientation 系统也会重建 Activity !

2.不同场景下 Activity 生命周期的变化过程
在这里插入图片描述
在这里插入图片描述
3.如何处理异常退出
您可通过使用 ViewModel 对象来减轻重新初始化 Activity 的负担。系统会在配置变更时保留 ViewModel,使其成为保存界面数据的理想场所,让您无需再次查询这些数据。

在这里插入图片描述
在这里插入图片描述
搞懂这个生命周期的执行后就可以回答了,首先要知道面试官的意思:是要重新启动并恢复这个 Activity 还是说直接退出整个 app
如果要恢复则要在 onSaveInstanceState() 中进行保存数据并在 onRestoreInstanceState() 中进行恢复
如果是要退出 app 的话就要捕获全局的异常信息,并退出 app
当然个人建议是使用 UncaughtExceotionHandler 来捕获全局异常进行退出 app 的操作,这样会减少之前崩溃所造成的后遗症!

4.什么是 onNewIntent
在这里插入图片描述
如果 IntentActivity 处于任务栈的顶端,也就是说之前打开过的 Activity ,现在处于 onPause 、 onStop 状态的话,其他应用再发送 Intent 的话

执行顺序为:onNewIntent,onRestart,onStart,onResume。

在该Activity的实例已经存在于Task和Back stack中(或者通俗的说可以通过按返回键返回到该Activity )时,当使用intent来再次启动该Activity的时候,如果此次启动不创建该Activity的新实例,则系统会调用原有实例的onNewIntent()方法来处理此intent.

且在下面情况下系统不会创建该Activity的新实例:

1,如果该Activity在Manifest中的android:launchMode定义为singleTask或者singleInstance.

2,如果该Activity在Manifest中的android:launchMode定义为singleTop且该实例位于Back stack的栈顶.

3,如果该Activity在Manifest中的android:launchMode定义为singleTop,且上述intent包含Intent.FLAG_ACTIVITY_CLEAR_TOP标志.

4,如果上述intent中包含 Intent.FLAG_ACTIVITY_CLEAR_TOP 标志和且包含 Intent.FLAG_ACTIVITY_SINGLE_TOP 标志.

5,如果上述intent中包含 Intent.FLAG_ACTIVITY_SINGLE_TOP 标志且该实例位于Back stack的栈顶.

5.启动模式的使用方式
在这里插入图片描述
优先级:动态指定方式即另外一种比第一种优先级要高,若两者同一时候存在,以另外一种方式为准。

限定范围:第一种方式无法为 Activity 直接指定 FLAG_ACTIVITY_CLEAR_TOP 标识,另外一种方式无法为 Activity 指定 singleInstance 模式。

6.启动模式的实际应用场景
在这里插入图片描述
7.快速启动一个 Activity
在这里插入图片描述
这个问题其实也是比较简单的,就是不要在 Activity 的 onCreate 方法中执行过多繁重的操作,并且在 onPasue 方法中同样不能做过多的耗时操作。

Activity 的 Flags
在这里插入图片描述
8.内存不足时系统会杀掉后台的Activity,若需要进行一些临时状态的保存,在哪个方法进行
在这里插入图片描述

9.onSaveInstanceState() 被执行的场景
系统不知道你按下 HOME 后要运行多少其他的程序,自然也不知道 activity A 是否会被销毁
因此系统都会调用 onSaveInstanceState() ,让用户有机会保存某些非永久性的数据。以下几种情况的分析都遵循该原则:
1.当用户按下 HOME 键时
2.长按 HOME 键,选择运行其他的程序时
3.锁屏时
4.从 activity A 中启动一个新的 activity 时
5.屏幕方向切换时

10.两个 Activity 之间跳转时必然会执行的方法
在这里插入图片描述

当在 A 里面激活 B 组件的时候, A 会调用 onPause() 方法,然后 B 调用 onCreate() , onStart() , onResume() 。

这个时候 B 覆盖了窗体, A 会调用 onStop() 方法. 如果 B 是个透明的,或者 是对话框的样式, 就不会调用 A 的 onStop() 方法。

11.scheme 跳转协议
在这里插入图片描述

12.Context 是什么
它描述的是一个应用程序环境的信息,即上下文。
通过它我们可以获取应用程序的资源和类, 也包括一些应用级别操作, 例如:启动一个 Activity ,发送广播,接受 Intent ,信息,等。

13.Activity 的管理机制
在这里插入图片描述
14.什么是 Activity
在这里插入图片描述
activity 是 Context 的子类,同时实现了 window.callback 和 keyevent.callback ,可以处理与窗体用户交互的事件。
开发中常用的有 FragmentActivity 、ListActivity

15.什么是 ANR,如何避免
在这里插入图片描述
16.Android不同组件ANR超时时间不同
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u012124438/article/details/113790826