bindService和startService的区别

区别:

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()

时间: 2024-08-10 18:37:17

bindService和startService的区别的相关文章

Android里Service的bindService()和startService()混合使用深入分析

先讲讲怎么使用bindService()绑定服务 应用组件(客户端)可以调用bindService()绑定到一个service.Android系统之后调用service的onBind()方法,它返回一个用来与service交互的IBinder绑定是异步的.bindService()会立即返回,它不会返回IBinder给客户端.要接收IBinder,客户端必须创建一个ServiceConnection的实例并传给bindService().ServiceConnection包含一个回调方法,系统调

bindService与startService区别

1. Started Service中使用startService()方法来进行方法的调用,调用者和服务之间没有联系,即使调用者退出了,服务依然在进行 [onCreate()-  >onStartCommand()->startService()->onDestroy()],注意其中没有 onStart(),主要是被onStartCommand()方法给取代了,onStart方法不推荐使用了.2. BindService中使用bindService()方法来绑定服务,调用者和绑定者绑在一

从头学Android之Service初步二

在上一篇,我们学习了通过startService来启动Service,由于篇幅过长,所以这一篇是接上一篇的 二.bindService方法启动Service 先看bindSerivce(Intent service,ServiceConnection conn,int flags)函数 参数说明: service:通过该参数也就是Intent我们可以启动指定的Service conn:该参数是一个ServiceConnection对象,这个对角用于监听访问者(也可以说成是客户端)与Service

Android中的Service与进程间通信(IPC)详解

Service 什么是Service 在后台长期运行的没有界面的组件.其他组件可以启动Service让他在后台运行,或者绑定Service与它进行交互,甚至实现进程间通信(IPC).例如,可以让服务在后台处理网络交互,播放音乐,文件I/O,或者与ContentProvider交互. 创建一个Service 新建一个类,继承Service,重写相关方法,如onBind,onUnBind,onCreate,onDestorey. 在AndroidManifest.xml中配置Service和相关权限

理解Android的startservice和bindservice(转)

一.首先,让我们确认下什么是service? service就是android系统中的服务,它有这么几个特点:它无法与用户直接进行交互.它必须由用户或者其他程序显式的启动.它的优先级比较高,它比处于前台的应用优先级低,但是比后台的其他应用优先级高,这就决定了当系统因为缺少内存而销毁某些没被利用的资源时,它被销毁的概率很小哦. 二.那么,什么时候,我们需要使用service呢?         我们知道,service是运行在后台的应用,对于用户来说失去了被关注的焦点.这就跟我们打开了音乐播放之后

深入理解Android的startservice和bindservice

一.首先,让我们确认下什么是service?         service就是android系统中的服务,它有这么几个特点:它无法与用户直接进行交互.它必须由用户或者其他程序显式的启动.它的优先级比较高, 它比处于前台的应用优先级低,但是比后台的其他应用优先级高,这就决定了当系统因为缺少内存而销毁某些没被利用的资源时,它被销毁的概率很小哦. 二.那么,什么时候,我们需要使用service呢?         我们知道,service是运行在后台的应用,对于用户来说失去了被关注的焦点.这就跟我们

Android后台进程与前台线程间的区别使用

博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 很早就翻译过Android API的一篇文章Android高级开发第四讲--API之Service,今天主要讲些实战的东西 比如Service的启动方式有两种,首先在AndroidManifest.xml中配置Service,然后通过bindService和startService来启动, 不同点在于: 执行方式:前者启动时执行onCreate-->onBin

Android-Service (基本知识,生命周期,实例-startService 启动的服务音乐播放器后台服务播放)

1.回顾 上篇 学习了 Android的四大组件之一 BroadCastReceiver 的 相关知识 2.重点 (1)Service 分类 (2)Service 的生命周期 (3)Service 标签 下的属性 (4)什么时候使用BindService 和 startService ? (5)实例 - 通过Service 服务 实现 音乐播放器 后台播放 3.Service 分类 3.1 按照地点分 (1)本地服务 服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local

【转】深入理解Android的startservice和bindservice--不错

原文网址:http://www.cnblogs.com/yejiurui/p/3429451.html 一.首先,让我们确认下什么是service?         service就是android系统中的服务,它有这么几个特点:它无法与用户直接进行交互.它必须由用户或者其他程序显式的启动.它的优先级比较高,它比处于前台的应用优先级低,但是比后台的其他应用优先级高,这就决定了当系统因为缺少内存而销毁某些没被利用的资源时,它被销毁的概率很小哦. 二.那么,什么时候,我们需要使用service呢?