栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Android Activity 怎么和Service 绑定?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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();@Overridepublic 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的优先级。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/360117.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号