当前位置: 首页 > 面试题库 >

Android Activity 怎么和Service 绑定?

唐涛
2023-03-14
本文向大家介绍Android Activity 怎么和Service 绑定?相关面试题,主要包含被问及Android Activity 怎么和Service 绑定?时的应答技巧和注意事项,需要的朋友参考一下

这需要实现service中的onBind()函数以返回service实例给activity

1、创建service类和activity类。

2、在service类中定义一个内部类继承自Binder()类:

public class MyBinder extends Binder{  
     public Service1 getService(){  
          return Service1.this;  
     }  
}  

实例化onBind()方法:

private final IBinder binder = new MyyBinder();
@Override
public IBinder onBind(Intent intent){
    Log.i(LOG,"onBind......");
    return binder;
}

 

3、在activity中完成绑定

Intent intent = new Intent(Activity1.this,Activity2.class);
bindService(intent,conn,Context.BIND_AUTO_CREATE);

bindService的第二个参数是一个ServiceConnection类型的参数。service和其他组件之间的连接都表示为一个ServiceConnection,要想将service和其他组件进行绑定,就需要实现一个新的ServiceConnection。

   public ServiceConnection conn= new ServiceConnection() {  
   @Override  
    public void onServiceDisconnected(ComponentName name) {  
    		//当连接意外断开时调用
            Log.i(LOG, "onServiceDisconnected>>>>>>>>");  
            myservice = null;  
    
   } 

   @Override  
    public void onServiceConnected(ComponentName name, IBinder service) {  
    //当建立连接时调用
   Log.i(LOG, "onServiceConnected>>>>>>>>");  
        myservice = ((Service1.MyBinder)service).getService();  
    }  
}; 

 

bindService的第三个参数是一个flag。 可以使用的flag有:

BIND_AUTO_CREATE:绑定完成后就启动目标service

BIND_DEBUG_UNBIND:这只在debug时使用,跟unbind有关。

BIND_NOT_FOREGROUND:确保被绑定的service永远不会有运行于前台的优先级,因为默认情况下,绑定一个service会提高它的优先级

BIND_ABOVE_CLIENT:确保客户端处于前台时,绑定的service也变为前台进程

BIND_ALLOW_OOM_MANAGEMENT:允许系统在低内存等状态下删除该service(这是自己对源码中注释的理解)

BIND_WAIVE_PRIORITY:绑定service时不改变其优先级

BIND_ADJUST_WITH_ACTIVITY:系统根据service所绑定的activity的重要程度来调整这个service的优先级。

 类似资料:
  • 本文向大家介绍activity和service的绑定方式以及怎么在Activity 中启动自己对应的Service?相关面试题,主要包含被问及activity和service的绑定方式以及怎么在Activity 中启动自己对应的Service?时的应答技巧和注意事项,需要的朋友参考一下 1、activity能进行绑定得益于Serviece的接口。为了支持Service的绑定,实现onBind方法。

  • 我们在 Service Worker 简介 中介绍了 Service Worker 的背景和兼容性等内容,然后在 Service Worker 生命周期 中介绍了 Service Worker 的生命周期以及所有的事件和 API, 但是我们还是不清楚如何才能使用 Service Worker, 以及在什么场景下使用什么 API 等等,这将是这篇文档所要提到的内容。 前提条件 Service Wor

  • 14.2.1.绑定到远程Service 客户端可以是一个Activity,这样我们可以在图形界面中看出它的工作状况。在这个Activity中,我们将绑定到远程Service,随后就可以像一个本地的Service那样使用它了。Android的Binder将自动处理其间的序列化/反序列化操作。 绑定操作是异步的,我们先发出请求,至于具体的操作可能会在稍后进行。为此,我们需要一个回调机制来响应远程服务的

  • 本文向大家介绍factory、service 和 provider 是什么关系?相关面试题,主要包含被问及factory、service 和 provider 是什么关系?时的应答技巧和注意事项,需要的朋友参考一下 factory , service , provider都是angular 提供的服务 factory就是原生js里的方法,一个简单的函数 service类似原生里构造函数的过程,拥有

  • 这个对象里的属性个数和key都是未知的

  • 本文向大家介绍Mapreduce 的 map 数量 和 reduce 数量 怎么确定 ,怎么配置?相关面试题,主要包含被问及Mapreduce 的 map 数量 和 reduce 数量 怎么确定 ,怎么配置?时的应答技巧和注意事项,需要的朋友参考一下 解答: map的数量有数据块决定,reduce数量随便配置。