【最新Android高级面试知识点--四大组件】

【最新Android高级面试知识点干货分享(四)】
转载请注明出处!

三、Service/IntentService

Service作为四大组件之一,也是面试官喜欢问的。
一般包括:启动方式、生命周期、Binder机制、保活以及唤醒等。

  • 启动方式:startService/bindService

  • 生命周期:

      onCreate--onStartCommand--onDestroy
      onCreate--onBind--onStart---onUnbind--onDestroy
    
  • Binder机制:IBinder/Stub/AIDL

      属于C/S架构,Service通过onBind方法,
      返回给客户端IBinder接口实例。
      更详细的见下面的AIDL
    

由于Service默认支行在主线程(ActivityThread)中,因此当在Service中执行耗时操作时,会阻塞UI线程,导致ANR.为此系统提出了IntentService来在子线程中开启服务,处理耗时操作。

  • IntentService:

      原理:是在onCreate()方法里面,
      通过HandlerThread来创建线程,开启线程
    
四、BroadCast/LocalBroadCast

广播知识点:种类、注册方式、使用广播时在应用安全方面注意事项。

广播的种类有:有序广播、无序广播、粘性广播

注册方式:静态注册(AndroidManifest.xml)、动态注册

BroadCast是系统级别,采用Binder通信机制;
LocalBroadCast本地广播,属应用级别,采用Handler通信机制。
如果没有与第三方通信,则推荐使用LocalBroadCast。

五、ContentProvider

内容提供者,专用于应用 间数据共享。
注意点:

  • ContentObserver

  • ContentResolver:

      ContentObserver用于观察ContentProvider中的变化,
      而它是通过ContentResolver的
      registerContentObserver()与unregisterContentObserver()
      来进行注册与注销。
      
      当ContentProvider中有变化时,
      就会回调ContentObserver中的onChange()方法
    

由于Android权限,在Android7.0以上,得用FileProvider(为ContentProvider的子类)
Android 7.0 禁止在应用外部公开 file:// URI,所以我们必须使用 content:// 替代 file://,这时主要需要 FileProvider 的支持,还需要动态申请访问SD卡目录的权限。

1,在AndroidManifest.xml中指定

	<provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="${applicationId}.fileprovider"
        android:exported="false"
        android:grantUriPermission="true">
        <meta-data 
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths_test"></meta>
      </provider>
        

2,在res下创建xml目录,然后在res/xml/下创建file_path_test的xml文件(主要是指定sdk的路径)

  <?xml version="1.0" encoding="utf-8"?>
        <paths>
            <external-path path="." name="external_storage_root">
        </paths>

(下一篇将整理分享Android自定义View、Android动画)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值