Android开发:bindService的使用方法

Android开发:bindService的使用方法http://blog.csdn.net/zhou_wenchong/article/details/51302574bindService用于绑定一个服务。这样当bindService(intent,conn,flags)后,就会绑定一个服务。这样做可以获得这个服务对象本身,而用startService(intent)的方法只能启动服务。   bindService方式的一般过程:

大家好,又见面了,我是你们的朋友全栈君。

http://blog.csdn.net/zhou_wenchong/article/details/51302574

bindService用于绑定一个服务。这样当bindService(intent,conn,flags)后,就会绑定一个服务。这样做可以获得这个服务对象本身,而用startService(intent)的方法只能启动服务。

    bindService方式的一般过程:

1.新建Service类BindService。在BindService类里新建内部类MyBinder,继承自Binder(Binder实现IBinder接口)。MyBinder提供方法返回BindService实例。

    public class MyBinder extends Binder{

        
        
public BindService getService(){

            
return BindService.this;
        }
    }

实例化MyBinder得到mybinder对象;

重写onBind()方法:

 @Override

 public IBinder onBind(Intent intent) {

  return mybinder;
 }

2.在Activity里,实例化ServiceConnection接口的实现类,重写onServiceConnected()和onServiceDisconnected()方法

ServiceConnection conn=new ServiceConnection(){

  @Override
  public void onServiceConnected(ComponentName name, IBinder service) {

  }

  @Override
  public void onServiceDisconnected(ComponentName name) {

  }

};

3.在Activity的onCreate()方法里,新建Intent,并绑定服务

        Intent intent=new Intent(MainActivity.this,BindService.class); 


        bindService(intent, conn,BIND_AUTO_CREATE);

 

4.在Activity的onDestroy里面,添加

unbindService(conn);

如果不加这一步,就会报Android.app.ServiceConnectionLeaked: ******.MainActivity has leaked ServiceConnection的异常。

 

bindService()的执行过程如下:

bindService(intent,conn,flag)->Service:onCreate()->Service:onBind()->Activity:onServiceConnected()

code

[java] 
view plain  
copy

  1.  1:调用者  
  2.   
  3. package com.zhf.local;  
  4.   
  5. import android.app.Activity;  
  6. import android.content.ComponentName;  
  7. import android.content.Context;  
  8. import android.content.Intent;  
  9. import android.content.ServiceConnection;  
  10. import android.os.Bundle;  
  11. import android.os.IBinder;  
  12.   
  13. /** 
  14.  * 此例的目的就是拿到MyService的引用,从而可以引用其内部的方法和变量 
  15.  *  
  16.  * @author Administrator 
  17.  *  
  18.  */  
  19. public class LocalServiceActivity extends Activity {  
  20.     /** Called when the activity is first created. */  
  21.     private MyService myService;  
  22.   
  23.     @Override  
  24.     public void onCreate(Bundle savedInstanceState) {  
  25.         super.onCreate(savedInstanceState);  
  26.         setContentView(R.layout.main);  
  27.   
  28.         Intent intent = new Intent(this, MyService.class);  
  29.         bindService(intent, connection, Context.BIND_AUTO_CREATE);  
  30.     }  
  31.   
  32.     private ServiceConnection connection = new ServiceConnection() {  
  33.   
  34.         @Override  
  35.         public void onServiceDisconnected(ComponentName name) {  
  36.             myService = null;  
  37.         }  
  38.   
  39.         @Override  
  40.         public void onServiceConnected(ComponentName name, IBinder service) {  
  41.             myService = ((MyService.MyBinder) service).getService();  
  42.             System.out.println(“Service连接成功”);  
  43.             // 执行Service内部自己的方法  
  44.             myService.excute();  
  45.         }  
  46.     };  
  47.   
  48.     protected void onDestroy() {  
  49.         super.onDestroy();  
  50.         unbindService(connection);  
  51.     };  
  52. }  
  53.   
  54. 2:服务者  
  55.   
  56. package com.zhf.local;  
  57.   
  58. import android.app.Service;  
  59. import android.content.Intent;  
  60. import android.os.Binder;  
  61. import android.os.IBinder;  
  62.   
  63. public class MyService extends Service {  
  64.     private final IBinder binder = new MyBinder();  
  65.   
  66.     @Override  
  67.     public IBinder onBind(Intent intent) {  
  68.         return binder;  
  69.     }  
  70.   
  71.     public class MyBinder extends Binder {  
  72.         MyService getService() {  
  73.             return MyService.this;  
  74.         }  
  75.     }  
  76.   
  77.     public void excute() {  
  78.         System.out.println(“通过Binder得到Service的引用来调用Service内部的方法”);  
  79.     }  
  80.   
  81.     @Override  
  82.     public void onDestroy() {  
  83.         // 当调用者退出(即使没有调用unbindService)或者主动停止服务时会调用  
  84.         super.onDestroy();  
  85.     }  
  86.   
  87.     @Override  
  88.     public boolean onUnbind(Intent intent) {  
  89.         // 当调用者退出(即使没有调用unbindService)或者主动停止服务时会调用  
  90.         System.out.println(“调用者退出了”);  
  91.         return super.onUnbind(intent);  
  92.     }  
  93. }  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133436.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm怎么进行断点调试_pycharm怎么设置断点调试

    pycharm怎么进行断点调试_pycharm怎么设置断点调试PyCharm作为IDE,断点调试是必须有的功能。否则,我们还真不如用纯编辑器写的快。【运行】和【调试】前的设置,请看文章1.添加断点断点的添加如下图所示在代码前面左键单机即可 2.调试断点点击那个绿色的甲虫图标,进行断点调试。点击后,会运行到第一个断点。会显示该断点之前的变量信息。 点击StepOver或者按F8,我们继续往下运行,到下一个断点,按钮…

    2022年8月26日
    8
  • MAC IntelliJ IDEA 2018.1版本 安装+破解方法

    一、下载IntelliJIDEA2018.1链接:https://confluence.jetbrains.com/display/IDEADEV/IDEA+2018.1+EAPideaIU-181.4445.20.dmg安装。二、下载包:http://idea.lanyus.com/jar/JetbrainsCrack-2.7-release-str.jar在Finder应用程序文件夹中右击…

    2022年4月8日
    52
  • 正则表达式常见用例

    正则表达式常见用例

    2022年3月12日
    52
  • 电商项目基本业务概述||电商后台管理系统的功能|| 电商后台管理系统的开发模式(前后端分离)|| 电商后台管理系统的技术选型[通俗易懂]

    电商项目基本业务概述||电商后台管理系统的功能|| 电商后台管理系统的开发模式(前后端分离)|| 电商后台管理系统的技术选型[通俗易懂]电商项目基本业务概述根据不同的应用场景,电商系统一般都提供了PC端、移动APP、移动Web、微信小程序等多种终端访问方式。电商后台管理系统的功能电商后台管理系统用于管理用户账号、商品分类、商品信息、订单、数据统计等业务功能。电商后台管理系统的开发模式(前后端分离)电商后台管理系统整体采用前后端分离的开发模式,其中前端项目是基于Vue技术栈的SPA项目…

    2022年5月6日
    60
  • 智能菜品量推荐——RapidMiner(一)

    智能菜品量推荐——RapidMiner(一)前言 本文是一篇阅读RapidMiner手册,结合当下目标产品做出的文字概述总结。RapidMiner与本产品需求非常贴切,对其进行理解与整理,贴出作为记录与项目书素材。 餐饮业盈利核心在于菜品与顾客。什么样的菜系和种类会吸引更多的顾客,每个客户的就餐喜好是什么,不同时期什么样的菜品最为畅销,能否通过几种不同菜品的组合达到更好的效果,是否可预测未来一段时间内菜品原材料的采购份量?一、无技术支撑下已有数据可以干什么? ① 点餐前,由有经验的服务员对顾客进行菜品…

    2022年8月18日
    8
  • 冒泡排序(java代码实现)

    冒泡排序(java代码实现)冒泡排序和快速排序1、冒泡排序1.1介绍1.2代码实现1.2.1基本实现1.2.2优化2、快速排序2.1介绍2.2代码实现1、冒泡排序1.1介绍1.2代码实现1.2.1基本实现1.2.2优化2、快速排序2.1介绍2.2代码实现…

    2022年6月22日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号