Android面试基础知识总结

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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就是

相关文档
最新文档