URI&&Service

URI

Uri:scheme + authority + path组成
Android规定secheme为:content://
authority:标识provider,系统通过authority来找到对应的Provider
我们开发Provider有两个步骤

  1. 继承ContentProvider,重写相应方法
  2. 在AndroidManifest.xml中配置Privider组件

<provider android:name = ".MyProvider"
android:authority = "com.mingwei.zheng.myProvider"
android:exported = true />

所以当我们的URI中的authority为配置中的”com.mingwei.zheng.myProvider”时,系统就会找MyProvider来处理该URI的请求。

Service

Service:是Android的四大组件之一,没有用户界面,在后台运行,它是运行在主线程的,因此如果做耗时操作会阻塞主线程,可能导致ANR,所以耗时操作要开子线程去做。
编写Service的两个步骤:

  1. 继承Service重写其onCreate(),onStartCommand,onBind()…方法
  2. 在AndroidManifest.xml中配置该组件

启动Service的两种方式:

  1. 调用Context的startService ()方法,会回调onStartCommand()方法,访问者和Service没有关联,因此就算访问者退出,Service还会继续运行。
  2. 调用Context的bindService()方法,会回调onBind()方法,访问者和Service绑定,访问者退出,Service也会退出

需要注意的是,我们可以同时startService()和bindService(),在这中情况下,只有stopService()和unBindServide()一起调用之后,Service才会销毁。
bindServie的完整签名为bindService(Intent intent, ServiceConnectiong conn, int flag)
其中,ServiceConnction用来监听访问者与Service的连接状态,连接成功的时候会回调ServiceConnection的onServiceConnected(ComponentName String, IBinder service)方法,一个Activity可以绑定多个Service,我们通过包名来区分不同Service,做对应操作。

BroadcastReceiver:

广播,相当于一种全局的监听器,监听系统全局的广播消息。
开发步骤:

  1. 继承BroadcastReceiver,重写其onReceive()方法
  2. 在AndroidManifest.xml,中注册该组件

广播有两种:

  1. Normal Broadcast(普通广播):是异步的,可以在同一时刻被所有接收者接收。
  2. Order Broadcast(有序广播):在注册的时候设置priority,优先级高的先接收到广播进行处理

发送广播:

  1. Context.sendBroadcast()发送Normal广播
  2. Context.sendOrderBroadcast()发送有序广播
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值