1, 四大组件是什么与它们的生命周期(及 Fragment).
Activity: 通过 Intent 来进行通信, intent 中包含动作和动作的数据
BroadcastReceive: 可以在广播中启动一个 Activity 或者 Service 来响应接收到的信息, 或者用 NotificationManager 来通知用户, 可以对外部数据进行过滤, 只对感兴趣的事件进行响应.
普通广播: Context.sendBoradCast(intent)
有序广播: Context.sendOrderBroadcast(intent,receiverPermission),receiverPermission 决定广播的级别, 值在 - 1000 到 1000 之间, 值越大, 发送的优先级越高. 接收的广播可以通过 intentfilter 中的 priority 设置优先级. abortBroadcast()可以截断广播.
异步广播: 通过 Context.sendStickyBroadcast(intent)发送. 还有 sendStickyOrderedBroadcast(intent, resultReceiver, scheduler, initialCode, initialData, initialExtras)方法, 该方法具有有序广播的特性也有异步广播的特性; 发送异步广播要: <uses-permission android:name="android.permission.BROADCAST_STICKY" />权限, 接收并处理完 Intent 后, 广播依然存在, 直到你调用 removeStickyBroadcast(intent)主动把它去掉.
监听广播 Intent 的步骤: 1. 定义一个类继承 BroadCastReceiver, 然后重写 onReceive()方法.
2. 静态注册, 直接在清单文件中注册或者动态注册. 代码中 registerReceiver(receive,intentfilter), 注销 unregisterReceiver(receive).
广播的生命周期只有 10s, 如果做了耗时的操作, 会导致 ANR.
Service: 使用方法: 1. 继承 Service, 清单文件中注册. 通过 startService()或者 bindService()方法启动.
通过 startService()方法启动的服务和调用者没有关系, 即使调用者关闭了, 服务仍然运行想停止服务要调用 Context.stopService(), 此时系统会调用 onDestory(), 使用此方法启动时, 服务首次启动系统先调用服务的 onCreate()-->onStart(), 如果服务已经启动再次调用只会触发 onStart()方法
使用 bindService()启动的服务与调用者绑定, 只要调用者关闭服务就终止, 使用此方法启动时, 服务首次启动系统先调用服务的 onCreate()-->onBind(), 如果服务已经启动再次调用不会再触发这 2 个方法, 调用者退出时系统会调用服务的 onUnbind()-->onDestory(), 想主动解除绑定可使用 Contex.unbindService(), 系统依次调用 onUnbind()-->onDestory();
ContentProvider: 其他应用可以通过 ContentResolver 类 (见 ContentProviderAccessApp 例子) 从该内容提供者中获取或存入数据
来源: http://www.bubuko.com/infodetail-2560253.html