Android面试基础知识总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1Activity
1.1Activity的概念
是Android应用层开发的四大组件之一,主要负责和用户交互部分,有自己的生命周期,在其上可以布置按钮,文本框等各种控件,简单来说就是Android 的UI部分。
1.2Activity与View的区别
1)Activity是四大组件中唯一一个用来和用户进行交互的组件。可以说
Activity就是android的视图层。
2)如果再细化,Activity相当于视图层中的控制层,是用来控制和管理View
的,真正用来显示和处理事件的实际上是View。
3)每个Activity内部都有一个Window对象, Window对象包含了一个
DecorView(实际上就是FrameLayout),我们通过setContentView给Activity设置显示的View实际上都是加到了DecorView中。
1.3Activity生命周期
1.3.1生命周期主干
1.3.2其他中转方法
1.4Activity启动模式1.4.1四种启动模式
1.4.2配置样例
1.5Activity启动方法
1)在一个Activity中调用startActivity()方法。
直接启动Activity,不带请求码。
2)在一个Activity中调用startActivityForResult()方法。
带请求码启动Activity。
1.6请求码与响应码
2BroadcastReceiver
2.1概念
BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。
2.2应用场景
在Android系统中,广播体现在方方面面:
eg:
1.当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动
服务的功能;
2.当锁屏或者点亮屏幕时就会产生一条广播,接收这条广播就可以实现一
些暂停或者开启一些耗电进程的功能。
3.当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做
出提示和保存数据等操作;
4.当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量
低时告知用户及时保存进度;
2.3注册
2.3.1静态注册
2.3.1.1概念
静态注册是在AndroidManifest.xml文件中配置的。
2.3.2动态注册
2.3.2.1概念
动态注册需要在代码中动态的指定广播地址并注册。
2.3.2.2需要注意的事项
RegisterReceiver是android.content.ContextWrapper类中的方法,Activity和Service都继承了ContextWrapper,所以可以直接调用。在实际应
用中,我们在Activity或Service中注册了一个BroadcastReceiver,当这个Activity或Service被销毁时如果没有解除注册,系统会报一个异常,提示我们是否忘记解除注册了。所以,需要在特定的地方执行解除注册操作:生命周期的onDestroy()。
有部分广播接受者,涉及到用户的敏感内容,需要在权限文件中声明。如开机完成的广播,用户电量变化的广播,用户网络状态发生改变的广播
2.3.3生命周期
1.广播接收者的生命周期是非常短暂的,在接收到广播的时候创建,
onReceive()方法结束之后销毁
2.广播接收者中不要做一些耗时的工作,否则会弹出Application No Response
错误对话框
3.最好也不要在广播接收者中创建子线程做耗时的工作,因为广播接收者被销
毁后进程就成为了空进程,很容易被系统杀掉
4.耗时的较长的工作最好放在服务中完成
3Service
3.1概念
服务是看不到界面的,,就是一个没有界面的Activity, 并且长期在后台运行的一个组件.。
3.2为什么用服务?
进程优先级, 回收时是从5~1, 从低到高
Foreground process 前台进程
Visible process 可视进程
Service process 服务进程
Background process 后台进程
Empty process 空进程
回收的优先级: 先回收空进程, 一个一个回收的, 当内存够用时, 不再回收空进程. 如果空进程回收完毕后, 内存还是不够用时, 继续向上一个一个的回收后台进程. 依次类推.
当系统内存不够用时, 需要回收服务进程时, 当系统内存又够用时, 会重新启动服务. 当用户去手动的把服务关闭时, 服务不会再重启了
3.3作用
由于ANR对Activity和BroadcastReceiver响应时间的限制(Activity对事件响应不超过5秒,BroadcastReceiver执行不超过10秒),使得在其中都不适合执行较耗时操作,这样像网络、数据库、复杂计算这类耗时操作的执行就需要一个组件来承担。Service作为Android四大组件之一,其功能之一就是耗时操作的执行,主要功能如下:
a. 执行需要长时间运行的操作,这个操作不与用户进行交互,如网络下载、大文件I/O、复杂计算、监听手机状态。
b. 应用内或应用间数据通信,Android每个应用程序都在自己的dalvik虚拟机中运行,一个应用是不允许访问其他应用的内存信息的,为此Android引入了Content Provider在不同应用间共享数据,BroadcastReceiver广播信息给不同应用程序,但Content Provider更多用于数据的共享,BroadcastReceiver 广播的信息会被所有应用接收较耗费系统资源,对于两个应用间动态的进行交互还需要通过Service来完成。
3.4启动方式
3.4.1直接启动
Activity开启完服务后就不管服务了. Activity和服务没有关系. startService 开启的服务, 只有stopService可以关闭
3.4.2绑定启动
绑定服务, 生命周期方法会执行: onUnbind -> onDestory 服务销毁了.
在activity中调用service中的方法.
步骤:
调用bindService方法绑定服务
1.在Activity中定义一个连接桥的内部类, 会在bindService方法传递给
service.
2.在service服务中onBind方法中返回一个IBinder接口对象.
3.在service类中定义一个IBinder的内部实现类, 在onBind方法返回.
4.当onBinder方法返回完对象后, activity中连接桥里的
onServiceConnected会备调用, 其中形参IBinder service就是