`

Android BindService

 
阅读更多

   一般情况下我们使用startService(Intent service)来启动一个服务,但这种情况下无法得到Service对象的引用,通过bindService方法启动服务则可以实现此功能。下面给一个小例子演示一下:

 

1.调用者

 

Java代码  收藏代码
  1. package com.zhf.local;  
  2.   
  3.   
  4. import android.app.Activity;  
  5. import android.content.ComponentName;  
  6. import android.content.Context;  
  7. import android.content.Intent;  
  8. import android.content.ServiceConnection;  
  9. import android.os.Bundle;  
  10. import android.os.IBinder;  
  11.   
  12. /** 
  13.  * 此例的目的就是拿到MyService的引用,从而可以引用其内部的方法和变量 
  14.  * @author Administrator 
  15.  * 
  16.  */  
  17. public class LocalServiceActivity extends Activity {  
  18.     /** Called when the activity is first created. */  
  19.     private MyService myService;  
  20.   
  21.     @Override  
  22.     public void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.main);  
  25.   
  26.         Intent intent = new Intent(this, MyService.class);  
  27.         bindService(intent, connection, Context.BIND_AUTO_CREATE);  
  28.     }  
  29.   
  30.     private ServiceConnection connection = new ServiceConnection() {  
  31.   
  32.         @Override  
  33.         public void onServiceDisconnected(ComponentName name) {  
  34.             myService = null;  
  35.         }  
  36.   
  37.         @Override  
  38.         public void onServiceConnected(ComponentName name, IBinder service) {  
  39.             myService = ((MyService.MyBinder) service).getService();  
  40.             System.out.println("Service连接成功");  
  41.             //执行Service内部自己的方法  
  42.             myService.excute();  
  43.         }  
  44.     };  
  45.   
  46.     protected void onDestroy() {  
  47.         super.onDestroy();  
  48.         unbindService(connection);  
  49.     };  
  50. }  

 

 

2.服务者

 

Java代码  收藏代码
  1. package com.zhf.local;  
  2.   
  3. import android.app.Service;  
  4. import android.content.Intent;  
  5. import android.os.Binder;  
  6. import android.os.IBinder;  
  7.   
  8. public class MyService extends Service {  
  9.     private final IBinder binder=new MyBinder();  
  10.     @Override  
  11.     public IBinder onBind(Intent intent) {  
  12.         return binder;  
  13.     }  
  14.       
  15.     public class MyBinder extends Binder{  
  16.         MyService getService(){  
  17.             return MyService.this;  
  18.         }  
  19.     }  
  20.       
  21.     public void excute(){  
  22.         System.out.println("通过Binder得到Service的引用来调用Service内部的方法");  
  23.     }  
  24.   
  25.     @Override  
  26.     public void onDestroy() {  
  27.         //当调用者退出(即使没有调用unbindService)或者主动停止服务时会调用  
  28.         super.onDestroy();  
  29.     }  
  30.   
  31.     @Override  
  32.     public boolean onUnbind(Intent intent) {  
  33.         //当调用者退出(即使没有调用unbindService)或者主动停止服务时会调用  
  34.         System.out.println("调用者退出了");  
  35.         return super.onUnbind(intent);  
  36.     }  
  37. }  
分享到:
评论

相关推荐

    Android bindservice失败解决方法

    Android bindservice失败解决方法 现象: this.bindService(bindIntent, conn, Context.BIND_AUTO_CREATE); 相同的代码以前使用一直很正常,但最近在项目中使用却一直绑定失败,bindservice返回false。 原因: 使用...

    android bindservice

    在Android应用开发中,"bindService"是一个关键的组件交互方式,它允许应用程序与服务进行交互,特别是当需要长时间运行的后台任务时。服务(Service)是Android四大组件之一,设计用于在没有用户界面的情况下执行...

    android使用bindService例子

    在Android开发中,`bindService()` 是一个关键的API,用于连接到远程服务,以便进行更复杂的交互。在这个例子中,我们有两个项目:`MyApplication` 和 `AIDLClient`,它们分别扮演服务提供者和服务使用者的角色。...

    bindservice

    在Android应用开发中,`bindService()`方法是用于将客户端(通常是Activity或BroadcastReceiver)与服务(Service)进行连接的关键操作。服务是Android系统中的一种组件,它可以在后台执行长时间运行的任务,即使...

    Android Service与BroadcastReceiver、bindService示例详解

    Android Service与BroadcastReceiver、bindService示例详解,代码非常详细,详解博客网址:http://blog.csdn.net/sunboy_2050/article/details/7364024

    Android中bindService基本使用方法概述

    Android中有两种主要方式使用Service,通过调用Context的startService方法或调用Context的bindService方法,本文只探讨纯bindService的使用,不涉及任何startService方法调用的情况。如果想了解startService相关的...

    android bind service

    在Android系统中,服务(Service)是一种用于在后台执行长时间运行操作而不与用户交互的应用组件。"bind Service"是Android中一种特殊的启动服务的方式,它主要用于客户端和服务端之间的交互,而不是像startService...

    BindService

    【BindService】是Android四大组件之一的Service的一个高级用法,相比普通的启动Service(startService),它提供了更紧密的交互方式。在Android应用开发中,Service通常用于在后台执行长时间运行的任务,例如播放...

    2011.09.01(3)——— android service startService bindService

    总结来说,理解并熟练掌握 `startService` 和 `bindService` 是 Android 开发中的必备技能。开发者需要根据实际需求选择合适的服务启动方式,以确保应用的稳定性和效率。同时,对于 `Service` 的生命周期管理和资源...

    bindService

    在Android系统中,`bindService`是一个至关重要的API,它用于连接到一个正在运行的Service。Service是Android四大组件之一,主要用于在后台执行长时间运行的操作,例如音乐播放、网络通信等。`bindService`提供了...

    Android startService bindService Aidl service基础全

    本文将深入探讨"Android startService, bindService, Aidl service基础全"这一主题,按照学习顺序依次讲解`testService`, `testBindService`, `testIntentService`, `testAidlClient+testAIDL`。 首先,我们来看`...

    Android中startService()和bindService()的测试

    实例详解Android中startService()和bindService()的区别。 说明详见http://blog.csdn.net/a343902152/article/details/50857316

    Android使用Service实现IPC通信的2种方式

    AIDL:Android Interface Definition Language,即Android接口定义语言。 Service跨进程传递数据需要借助aidl,主要步骤是这样的: 编写aidl文件,AS自动生成的java类实现IPC通信的代理 继承自己的aidl类,实现里面...

    BindService_Demo

    本示例"BindService_Demo"将着重讲解如何在Android中使用`Service`,特别是`Service`与`Activity`之间的绑定机制。下面我们将深入探讨相关知识点。 1. **Service基本概念**: `Service` 是Android四大组件之一...

    音乐播放器bindservice和startService

    在Android应用开发中,音乐播放器的实现是一个常见的需求,涉及到多媒体处理、用户界面设计以及服务(Service)的使用。本篇文章将详细讲解如何利用`bindService`和`startService`来实现音乐播放功能,这两种服务...

Global site tag (gtag.js) - Google Analytics