Service与Activity类似,也需要在Manifest.xml对应的<service>标签声明.其回调方法有:onCreate(),onStart(),onDestroy(); Service不能自己启动,必须用Context对象(例如一个Activity)调用StartService()或bindService()启动,两者启动的生命周期是不同的.

调用StartService()时,若Service未启动,则先onCreate(),再onStart();若启动则直接 onStart();Context对象可以通过stopService()关闭服务,Service自身也可以用stopSelf()或 stopSelfResult来关闭,关闭前会调用onDestroy().

bindService()会使当前的Context对象通过一个ServiceConnection对象绑定到指定的服务.

若服务未启动,则首先onCreate(),再onBind()

若绑定服务的Context对象被销毁,则服务会调用onUnbind()和onDestroy().

BroadcastReceiver不能绑定服务.

Context对象可以unbindservice(),此时服务会调用unbind(),若服务是通过bindService()启动的,还会调用onDestroy().

BroadcastReceiver

首先将需要发送的信息包装成Intent对象,用 Context.sendBroadcast(),sendOrderedBroadcast(),sendStickyBroadcast()以广播形式发送出去.则所有注册的BroadcasrReceiver的过滤器会做匹配检测,若匹配通过,则调用BroadcasrReceiver的 onReceive()方法.

sendBroadcast(),sendStickyBroadcast()的消息被接收后,所有匹配的BroadcasrReceiver会随机执行onReceive().

sendOrderedBroadcast()则根据BroadcasrReceiver注册时设置的过滤器优先级顺序进行.

sendStickyBroadcast(),Intent发出后会一直存在,并且在以后调用registerReceiver()注册匹配相同的Intent时会直接返回该Intent.

注册BroadcastReceiver的两种方式:

1.在Menifest.xml文件中用<receiver>标签注明,内部用<intent-filter>设置过滤器.

2.在代码中定义并设置好一个IntentFilter对象,在需要的地方用Context.registerReceiver()注册,取消注册用ujnregisterReceiver(),r 若Context对象销毁,则BroadcastReceiver也自动取消注册

注册BroadcastReceiver和sendBroadcast()时可以指定接收权限,此时只有在Manifest.xml中用<uses-permission>授权才可以接收到

更多相关文章

  1. drawable 下 selector 状态
  2. Android应用程序的startActivity过程
  3. Android地图尝试之两行代码调用高德地图来完成位置展示
  4. Android数据库更新并保留原来数据的实现
  5. 现在跨平台开发(手机平台,主要是Android、iOS以及WP)工具或者技术都
  6. android中关于微信支付流程的总结
  7. Android两个Activity传递数据,onActivityResult获取结果时Intent
  8. Android(安卓)动画animation 深入分析
  9. Android—Service与Activity的交互

随机推荐

  1. Android(安卓)LinearLayout Why Gravity
  2. Android(安卓)Third Party Libraries and
  3. Android(安卓)Dev Intro - GLSurfaceView
  4. Android(安卓)Studio Gradle project syn
  5. Android(安卓)进度条
  6. Android中Handler机制
  7. Android(安卓)复制到剪贴板
  8. android xml中应用占位符
  9. Android(安卓)Camera2 API 学习笔记2
  10. Android(安卓)SMS(一) —— 读取短信