Activity面试题库

1.什么是Activity

Activity是Android的四大组件之一,Activity是用户操作的可视化界面;为用户提供了可以完成操作指令串口。创建完Activity之后,需要调用setContentView()方法来完成界面的显示。

2.setContentView()

在Activity中可以多次调用setContentView方法吗?说说不同时机第二次调用setContentView会发生什么?
 可以多次进行调用,比如说在欢迎界面,后台处理数据显示界面可能会有延时,此时可以在Activity中调用两次setContentView()方法来实现欢迎界面(平时app上的广告也是这么设置的)

3.生命周期

正常生命周期

onCreate:表示Activity正在被创建,常做初始化操作,如setViewContent界面资源、初始化数据
onStart:表示Activity正在启动,已经可见但没有出现在前台,无法跟用户进行交互
onResume:表示Activity正在获取焦点,此时的Activity可见并出现在前台,可以跟用户进行交互。
onPause:表示Activity正在停止,可做数据存储,停止动画等。
onStop:表示Activity及即将停止,可以做稍微重量级的回收工作,如取消网络连接、注销广播接收器。
onDestroy:表示Activity即将停止,常常做回收工作、资源释放。

跳转生命周期

1.A->B
Activity A启动另一个Activity B会回调的方法:Activity A的onPause() -> Activity B的 onCreate() -> onStart() -> onResume() -> Activity A 的 onStop();如果B是完全透明的,则最后不会调用Activity A的 onStop() ;如果是 Dialog,同后种情况。
2.横竖屏切换
onPause
onSaveInstanceState //这里可以用来横竖屏切换的保存数据
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState//这里可以用来横竖屏切换的恢复数据
onResume
资源适配方法:
①自适应生命周期,保存恢复状态,动态自适应布局
②在AndroidManifest.xml中设置,不让activity重走生命周期从而保存状态,然后通过onConfigurationChanged自适应布局

android:configChanges=orientation|screenSize

③禁止横竖屏切换
3.前台切换到后台,然后在回到前台时Activity的生命周期。
点击home键回到桌面–>onPause()–>onStop()
再次回到原Activity时–>onRestart()–>onStart()–>onResume()
4.下拉状态栏时Activity的生命周期?
首先,通知栏下拉一点点,符合一般描述中“Activity被部分遮挡”——onPause()
然后,通知栏完全落下之后,“Activity被全部遮挡”——onStop()

4.onSaveInstanceState()

onSaveInstanceState()不一定会调用,所以不建议保存持久化数据,如果是持久化数据建议保存在onPause()中,onSaveInstanceState()只用来保存瞬态数据,比如控件状态,成员变量等,不建议在onSaveInstanceState()和onPause()中做耗时操作。

5.Activity启动模式

6.Activity的关闭

关闭所有:创建一个类,onCreat()时放进List中,遍历List,调用finish
关闭指定:给每个启动的Activity设置一个标记Tag,根据Tag和集合可以到达的位置关闭指定的Activity

7.Activity的启动过程

8.Activity的通信

Activity-Activity

1.设置全局变量
2.Intent:携带的数据大小有限制,512k以下的数据可以正常传递,512k-1024k会闪退,1024k以上会报错。
显式启动:直接指定要跳转的Activity类名,不用过滤,效率高,适用于同一个应用中的不同Activity跳转
隐式启动:需要过滤,相对耗时,但可以找到所有之匹配的应用。适用于不同应用之间的Activity跳转。
隐式启动会找到所匹配到的应用,并提示用户选择打开方式,如果有多个组件被匹配成功,就会以对话框列表的方式让用户进行选择。
3.SharedPreference:在A中存储,B中读取
4.Bundle

Activity-Fragment

1.Handler:耦合,不利于Fragment复用,Handler用多了会产生内存泄漏。
2.广播(大材小用)
3.EventBus
4.接口getActivity/getSupportFragmentManager()
4.Bundle

Activity-Service

1.在startService和stopService方法中添加Intent进行通信
2.创建ServiceConnection()匿名类,重写onServiceConnencted()方法和onServiceDisconnected()方法
注:任何一个服务在整个应用程序范围内都是通用的,MyService不仅可以和MainActivity绑定,也可以和任何一个活动绑定,绑定之后获取相同的DownloadBinder实例
3.CallBack+Handler

发布了67 篇原创文章 · 获赞 22 · 访问量 5812

猜你喜欢

转载自blog.csdn.net/qq_40384370/article/details/103459604
今日推荐