码迷,mamicode.com
首页 > 其他好文 > 详细

bindService和startService的区别

时间:2015-03-04 16:03:09      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

区别:

startService,关闭服务退出activity,service仍然处于后台运行

bindService,关闭服务退出activity直接stopService,停止服务  

 

bindService用于绑定一个服务,与服务进行通讯;startService用于启动停止服务

bindService方式的一般过程:

新建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;
 }

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

ServiceConnection conn=new ServiceConnection(){

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

  @Override
  public void onServiceDisconnected(ComponentName name) {
  }

};

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

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

 

在Activity的onDestroy里面,添加

unbindService(conn);

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

 

bindService()的执行过程如下:

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

bindService和startService的区别

标签:

原文地址:http://www.cnblogs.com/xin-haiyang/p/4313270.html

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