Android开发之bindService()通信

Service启动方式有两种,startService(intent)和bindService(intent,conn,Context.BIND_AUTO_CREATE)

startService(intent),【onCreate()-  >onStartCommand()->startService()->onDestroy()】

该方法启动service,会执行一个onStartCommand()的方法,所以一些操作就可以放在onStartCommand()中进行处理。

bindService(intent,conn,Context.BIND_AUTO_CREATE),【onCreate()->onBind()->onUnbind()->onDestroy()】

绑定启动service,

使用该方法启动service分为几部

1.在Service中,重写onBind()方法,返回一个iBinder对象。

1     @Override
2     public IBinder onBind(Intent arg0) {
3         // TODO Auto-generated method stub
4         Log.d("learnservice", "绑定服务...");
5         return new MyBinder();
6     }

2.新建Service类BinderService,在BindService类里新建内部类MyBinder,继承Binder(Binder实现IBinder接口)。该类中实现一些与service通信的方法,比如setData()方法。

1     public class MyBinder extends Binder{
2         public void setData(String data){
3             MyService.this.data=data;
4         }
5     }

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

 1 ServiceConnection conn=new ServiceConnection() {
 2
 3         @Override
 4         public void onServiceDisconnected(ComponentName name) {
 5             // TODO Auto-generated method stub
 6
 7         }
 8
 9         @Override
10         public void onServiceConnected(ComponentName name, IBinder service) {
11             // TODO Auto-generated method stub
12             binder=(MyBinder) service;   //该binder,需要在activity中声明。
13             Log.d("learnservice", "绑定服务conn...");
14         }
15     };

4.使用button的onClick()或者activity的onCreat()等触发bindService()方法

1     @Override
2     public void onClick(View v) {
3         intent = new Intent(MainActivity.this,MyService.class);
4         bindService(intent, conn, Context.BIND_AUTO_CREATE);5     } 

5.在activity中声明service中的binder

1 private MyService.MyBinder binder;

6.同时把该binder放在serviceConnection的onServiceConnection()方法中

1 binder=(MyBinder) service;

这样,就完成了Activity和Service通过bindService()方法绑定并通信。

时间: 2024-10-16 01:37:30

Android开发之bindService()通信的相关文章

Android开发之bindService()侦听service内部状态

在Android开发之bindService()通信的基础上,实现bindService()方法侦听service内部状态. 实现侦听service内部状态,使用的是回调机制 1.首先实现一个接口 1 public static interface CallBack{ 2 void onDataChange(String data); 3 } 2. 1 private CallBack callBack=null; 2 public void setCallBack(CallBack callB

【Android笔记】Android开发之Http通信HttpURLConnection接口

HttpURLConnection接口 Http通信协议中,使用的最多的就是Get和Post. Get请求可以获取静态页面,也可以把参数放在字串后面,传递给服务器. Post与Get不同的是Post的参数不是放在URL字串的里面,而是放在http请求数据中. HttpURLConnection是JAVA的标准类,继承自URLConnection类: HttpURLConnection和URLConnection类都是抽象类,无法直接实例化对象. 其对象主要是通过URL的openConnectio

Android开发之IPC进程间通信-AIDL介绍及实例解析

一.IPC进程间通信 IPC是进程间通信方法的统称,Linux IPC包括以下方法,Android的进程间通信主要采用是哪些方法呢? 1. 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信:   2. 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身:linux除了支持Unix早期

【转】Android开发之旅:进程与线程

引言 当应用程序的组件第一次运行时,Android将启动一个只有一个执行线程的Linux进程.默认,应用程序所有的组件运行在这个进程和线程中.然而,你可以安排组件运行在其他进程中,且你可以为进程衍生出其它线程.本文从下面几点来介绍Android的进程与线程: 1.进程 2.线程 2.1.远程过程调用(Remote procedure calls,RPCs) 2.2.线程安全方法 1.进程 组件运行于哪个进程中由清单文件控制.组件元素——<activity>.<service>.&l

【转】Android开发之旅:组件生命周期

组件生命周期(一) 引言 应用程序组件有一个生命周期——一开始Android实例化他们响应意图,直到结束实例被销毁.在这期间,他们有时候处于激活状态,有时候处于非激活状态:对于活动,对用户有时候可见,有时候不可见.组件生命周期将讨论活动.服务.广播接收者的生命周期——包括在生命周期中他们可能的状态.通知状态改变的方法.及这些状态的组件寄宿的进程被终结和实例被销毁的可能性. 本文主要讨论活动的生命周期及他们可能的状态.通知状态改变的方法.分为以下三部分: 1.活动生命周期 2.保存活动状态 3.协

【转】Android开发之旅:应用程序基础及组件

为了后面的例子做准备,本篇及接下来几篇将介绍Android应用程序的原理及术语,这些也是作为一个Android的开发人员必须要了解,且深刻理解的东西.本篇的主题如下: 1.应用程序基础 2.应用程序组件 2.1.活动(Activities) 2.2.服务(Services) 2.3.广播接收者(Broadcast receivers) 2.4.内容提供者(Content providers) 因为这些内容比较理论,且没有用例子来说明,看上去会比较枯燥,我就把这几篇写得算比较短,方便大家吸收. 1

Android开发之Fragment详解

Android开发之Fragment学习 1.简介: Fragment是Android 3.0引入的新API. Fragment代表了 Activity的子模块,因此可以把Fragment理解成Activity片段.Fragment用于自己的生命周期,也可以接受它自己的输入事件. Fragment必须被"嵌入" Activity中使用,因此虽然Fragment也拥有自己的生命周期,但Fragment的生命周期会受它所在的Activity的生命周期的控制.例如,当Activity暂停时,

android开发之MediaPlayer+Service MP3播放器

http://blog.csdn.net/zzy916853616/article/details/6450753 [java] view plaincopy import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.List; import android.app.ListActivity; import android.apps.service.Player

Android开发之AudioManager(音频管理器)详解

AudioManager简介: AudioManager类提供了访问音量和振铃器mode控制.使用Context.getSystemService(Context.AUDIO_SERVICE)来得到这个类的一个实例. 公有方法: Public Methods int abandonAudioFocus(AudioManager.OnAudioFocusChangeListenerl) 放弃音频的焦点. void adjustStreamVolume(int streamType, int dir