码迷,mamicode.com
首页 > 移动开发 > 详细

Android开发之bindService()通信

时间:2015-07-11 16:28:21      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

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()方法绑定并通信。

Android开发之bindService()通信

标签:

原文地址:http://www.cnblogs.com/liyiran/p/4638761.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!