四大组件是什么

Activity 活动、Service 服务、Broadcast Receiver 广播接收器、Content Provider内容提供器

四大组件的生命周期和简单用法

活动

生命周期:启动activity:系统先调用onCreate(),然后调用onStart(),最后调用onResume()方法,activity进入运行状态。

简单用法:活动的跳转

服务

一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。

启动服务:Contex.startService()或Contex.bindService()启动服务

广播接收器

对外部事件进行过滤,只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。

https://www.jianshu.com/p/51aaa65d5d25

内容提供器

它主要的作用就是将程序的内部的数据和外部进行共享,为数据提供外部访问接口。

Android 五大组件

Android 五大布局: FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。

Activity之间的通信方式

  • Intent
  • Broadcast
  • 数据存储
  • 静态变量

Activity各种情况下的生命周期

Activity的四种启动模式对比

  • standard,每新建一个活动,都会新建一个实例
  • singleTop,每次扫描栈顶,如果在任务栈顶发现了相同的实例则重用,否则新建并压入栈顶。
  • singleTask,会扫描整个任务栈,发现了相同的实例则重用,否则新建并压入栈顶。
  • singleInstance,该模式具备singleTask模式的所有特性外,并且该实例整个系统中就这么一个实例

https://hit-alibaba.github.io/interview/Android/basic/Android-LaunchMode.html

Activity 怎么和Service 绑定?

怎么在Activity 中启动自己对应的Service?

service和activity怎么进行数据交互?

Service的开启方式

  • start方式
1.定义一个类继承Service
2.在Manifest.xml文件中配置该Service
3.使用Context的startService(Intent)方法启动该Service
4.不再使用时,调用stopService(Intent)方法停止该服务

https://www.jianshu.com/p/2fb6eb14fdec

  • bind方式绑定activity
1.定义一个类继承Service
2.在Manifest.xml文件中配置该Service
3.使用Context的bindService(Intent, ServiceConnection, int)方法启动该Service
4.不再使用时,调用unbindService(ServiceConnection)方法停止该服务

请描述一下Service 的生命周期

https://blog.csdn.net/carson_ho/article/details/53160137

onCreat()创建服务
onStartCommand()开始服务
onDestroy()销毁服务
onBind()绑定服务
onUnbind()解绑服务

谈谈你对ContentProvider的理解

https://www.jianshu.com/p/f5ec75a9cfea

说说ContentProvider、ContentResolver、ContentObserver 之间的关系

请描述一下广播BroadcastReceiver的理解

广播的分类

广播被分为两种不同的类型:

  • 普通广播(Normal broadcasts)普通广播是完全异步的,可以在同一时刻(逻辑上)被所有接收者接收到,消息传递的效率比较高,但缺点是:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播;
  • 有序广播(Ordered broadcasts)有序广播是按照接收者声明的优先级别(声明在intent-filter元素的android:priority属性中,数越大优先级别越高,取值范围:-1000到1000。也可以调用IntentFilter对象的setPriority()进行设置),被接收者依次接收广播。

广播使用的方式和场景

在manifest 和代码中如何注册和使用BroadcastReceiver?

4大基本组件都需要注册才能使用,每个Activity、service、Content Provider都需要在AndroidManifest文件中进行配置。AndroidManifest文件中未进行声明的activity、服务以及内容提供者将不为系统所见,从而也就不可用。

broadcast receiver广播接收者的注册:

  • 静态注册(在AndroidManifest文件中进行配置),会随系统的启动而一直处于活跃状态
  • 通过代码动态创建并以调用Context.registerReceiver()的方式注册至系统。
  1. 制作intent(可以携带参数)
  2. 使用sendBroadcast()传入intent;
  3. 制作广播接收器类继承BroadcastReceiver重写onReceive方法(或者可以匿名内部类啥的)
  4. 在java中(动态注册)或者直接在Manifest中注册广播接收器(静态注册)使用registerReceiver()传入接收器和intentFilter
  5. 取消注册可以在OnDestroy()函数中,unregisterReceiver()传入接收器

本地广播和全局广播有什么差别?

  • BroadcastReceiver用于应用之间的传递消息;
  • LocalBroadcastManager用于应用内部传递消息,比broadcastReceiver更加高效。

Application 和 Activity 的 Context 对象的区别

  • 第一种中context的生命周期与Application的生命周期相关的,context随着Application的销毁而销毁,伴随application的一生
  • 第二种中的context跟Activity的生命周期是相关的

Android中数据存储方式

  • 文件存储
  • SharedPreferences
  • SQLite数据库存储
  • ContentProvider
  • 网络存储

问题来源

https://github.com/AweiLoveAndroid/CommonDevKnowledge/blob/master/interview/contents/Android%E9%9D%A2%E8%AF%95%E9%A2%98.md

最后修改:2019 年 03 月 30 日
喜欢我的文章吗?
别忘了点赞或赞赏,让我知道创作的路上有你陪伴。