Andorid开发艺术探索读书笔记--Android四大组件

四大组件

Activity

  • Activity是一种展示型组件,用于向用户直接展示一个界面,并且可以接收用户的输入信息从而进行交互
  • Activity是最重要的一种组件,对于用户来说,Activity就是一个Android应用的全部,这是因为相对于其他三大组件只有Activity可被用户感知
  • Activity的启动有Intent触发,其中Intent分为两种:
    1. 显式Intent: 可以明确的指向一个Activity组件
    2. 隐式Intent: 指向一个或多个目标Activity组件,当然也可能没有任何一个Activity组件可以处理这个隐式Intent。
  • Activity组件在不同的启动模式下会有不同的效果
  • Activity组件是可以被停止的,在实际开发中可以通过Actvity的finish方法来结束一个Activity组件运行

Service

  • Service是一种计算组件,用于在后台执行一系列计算任务
  • Service组件工作再后台,因此用户无法直接感知他的存在
  • Service有两种状态: 启动状态和绑定状态; 当Serivice处于启动状态时,这个时候Service内部可以做一些后台计算,并且不需要和外界有直接交互。当Service处于绑定状态时,仍可以进行后台计算,但是处于这种状态时外界可以很方便的和Service组件进行通信。
  • 尽管Service组件是用于执行后台计算的,但是它本身是运行在主线程的,因此耗时任务仍需要在单独的线程中去完成
  • Serivice组件也是可以停止的,停止一个Service组件稍微复杂,需要灵活采用stopService和unBindService这个两个方法才能完全停止一个Service组件

BroadcastReceiver

  • BroadcastReceiver是一种消息组件,用于在不同的组件乃至不同的应用之间传递消息。
  • BroadcastReceiver同样无法被用户直接感知,因为他工作再系统内部
  • BroadcastReceiver也叫广播,广播的注册方式有两种:
    1. 静态注册: 在AndroidManifet中注册广播,这种广播在应用安装时会被系统解析,此种形式的广播不需要应用启动可以收到相应的广播
    2. 动态注册:需要通过Context.registerReceiver()来实现,并且在不需要的时候需要通过Context.unRegisterReceiver()来解除广播,此种形式的广播必须要启动应用才能注册并接收广播。

ContentProvider

  • ContentProvider是一种数据共享型组件,用于向其他组件乃至其他应用共享数据。
  • ContentProvider同样也无法被用户感知
  • ContentProvider他的内部需要实现增删改查这四种操作,在他的内部维持着一份数据集合,这个数据集合既可以通过数据库来实现,也可以采用其他任何类型来实现,比如List和Map,ContenProvider对数据集合的具体实现并没有任何要求

需要注意的是ContentProvider的内部Insert,delete,update和query方法需要处理好线程同步,因为这几个方法是在Binder线程池中被调用,另外ContentProvider也是不需要手动停止的

你可能感兴趣的:(android)