目录
5-1.stopService()方法与stopSelf()方法的区别
12.Service应用(二)
3.Bound Service
当应用程序组件通过调用bindService()方法绑定到Service时,Service 处于绑定状态。多个组件可以同时绑定到一个Service上,当它们都解绑定时,Service被销毁。
如果Service仅用于本地应用程序并且不必跨进程工作,则开发人员可以编写自己的Binder 类来为客户端提供访问Service公共方法的方式。
注:这仅当客户端与Service位于同一个应用程序和进程时才有效,这也是最常见的情况。例如,音乐播放器需要将Activity 绑定到自己的Service来在后台播放音乐。
应用程序组件(客户端)能调用bindService()方法绑定到Service,该方法的语法格式如下:
bindService(Intent service, ServiceConnection conn, int flags)
参数说明:
◆service:通过Intent指定要启动的Service。
◆conn:一个 ServiceConnection 对象,该对象用于监听访问者与Service之间的连接情况。
◆flags:指定绑定时是否自动创建Service。该值设置为0时表示不自动创建,设置为BIND_AUTO_ CREATE时表示自动创建。
接下来Android系统调用Service 的onBind()方法,返回 IBinder 对象来与Service通信。
注:只有Activity、Service 和Content Provider能绑定到Service,BroadcastReceiver不能绑定到Service。
例:
BinderService.java
package com.example.randonselectionnumber;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class BinderService extends Service {
public BinderService() {
}
//创建MyBinder内部类
public class MyBinder extends Binder{
public BinderService getService(){//创建获取Service的方法
return Binder