文档章节

bindService的小结

p
 passengers
发布于 2017/07/07 16:29
字数 392
阅读 2
收藏 0
点赞 0
评论 0

服务

 

StartService 和 BindService的区别:

 

StartService是和调用者(Activity)没有联系,即调用者退出,服务依然可以在后台运行。

生命周期:onCreate()-  >onStartCommand()->startService()->onDestroy()

 

BindService是和调用者(Activity)有联系,一旦调用者退出,服务也会被停止。

生命周期:onCreate()->onBind()->onUnbind()->onDestroy()

 

BindService的使用

绑定一个服务:

Intent intent = new Intent(this, BluetoothScanService.class);
bindService(intent,
conn, Context.BIND_AUTO_CREATE);

参数

conn 实现ServiceConnection类

Context.BIND_AUTO_CREATE 是否自动启动服务,默认的是这个

 

private ServiceConnection conn = new ServiceConnection() {
//当调用这个方法时说明服务已经绑定连接了

    @Override

    public void onServiceConnected(ComponentName componentName, IBinder iBinder) {

        BluetoothScanService.BindService bindService = (BluetoothScanService.BindService) iBinder;

        BluetoothScanService service = bindService.getService();
         service.abc();//可以在这里调用服务里的方法了



    }
//当系统与service的连接意外丢失时调用此方法(如service崩溃了或被强杀了)

    @Override

    public void onServiceDisconnected(ComponentName componentName) {



    }

};

 

服务解绑:

unbindService(conn); //虽然说当调用者退出后,服务也会关闭,但我们还需要手动去解绑,否则就会报异常

 

都是需要去实现ServiceConnection类的

 

附,服务类的代码:

public class BluetoothScanService extends Service {



    @Override

    public void onCreate() {

        super.onCreate();

    }



    @Override

    public int onStartCommand(Intent intent, int flags, int startId) {

        scan();

        return super.onStartCommand(intent, flags, startId);

    }



    @Override

    public void onDestroy() {

        super.onDestroy();

    }



    @Nullable

    @Override

    public IBinder onBind(Intent intent) {

//        scan();

        return bindService;

    }
 
//创建BindService类,通过BindService类来操作服务里的方法

    private BindService bindService = new BindService();



    public class BindService extends Binder {



        public BluetoothScanService getService() {

            return BluetoothScanService.this;

        }

    }1)
//注:如果使用的是startService,那么就需要在onStartCommand()方法里执行

//如果使用的是bindService,那么就需要在onBind()方法里执行

    private void scan() {

              //在服务里要做的事
    }
}

 

© 著作权归作者所有

共有 人打赏支持
p
粉丝 0
博文 7
码字总数 2822
作品 0
长沙
Android中bindService的使用方法

bindService用于绑定一个服务。这样当bindService(intent,conn,flags)后,就会绑定一个服务。这样做可以获得这个服务对象本身,而用startService(intent)的方法只能启动服务。 bindService方...

liuchuanf ⋅ 2013/01/06 ⋅ 0

android服务类 Service

当只使用startService()来启动服务 startService可以多次调用,stopService()也可以多次调用。 总结:::startService第一次调用的时候,Service的生命周期方法 onCreate()---->onStartComm...

乱取名字 ⋅ 2015/12/28 ⋅ 0

Android中BindService方式使用的理解

最近学习了一下Android里面的Service的应用,在BindService部分小卡了一下,主要是开始没有彻底理解为什么要这么实现。 BindService和Started Service都是Service,有什么地方不一样呢: 1....

青莲居士 ⋅ 2013/03/02 ⋅ 0

Android中BindService方式使用的理解

最近学习了一下Android里面的Service的应用,在BindService部分小卡了一下,主要是开始没有彻底理解为什么要这么实现。 BindService和Started Service都是Service,有什么地方不一样呢: 1....

青莲居士 ⋅ 2013/04/04 ⋅ 0

服务的生命周期回调方法

与采用Context.startService()方法启动服务有关的生命周期方法 onCreate()à onStart() à onDestroy() onCreate()该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次startSe...

长平狐 ⋅ 2012/10/09 ⋅ 0

startService与bindService的区别

Android执行Service有两种方法,一种是startService,一种是bindService。下面让我们一起来聊一聊这两种执行Service方法的区别。 1、生命周期上的区别 执行startService时,Service会经历onC...

亭子happy ⋅ 2015/02/08 ⋅ 0

Bind Service方法

Service可以和Activity绑定,也可以和service绑定,service有两种绑定方法。这里拿Activity和service绑定为例。 1.第一种方法 1)在activity中 Intentintent=newIntent(MainActivity.this,Bin...

yixinuestc ⋅ 2013/10/09 ⋅ 0

安卓开发startservice 和bindservice详解

  Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDestroy   我们有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。   1 通过startService   ...

fjabing ⋅ 2014/02/16 ⋅ 0

Android Service 服务(三)—— bindService与remoteService

一、bindService简介 bindService是绑定Service服务,执行service服务中的逻辑流程。 service通过Context.startService()方法开始,通过Context.stopService()方法停止;也可以通过Service.s...

长平狐 ⋅ 2013/01/06 ⋅ 0

Android Service学习笔记

一 什么是Service 服务是运行在后台的一段代码。它可以运行在它自己的进程,也可以运行在其他应用程序进程的上下文(context)里面,这取决于自身的需要。其它的组件可以绑定到一个服务(Ser...

hewei2882 ⋅ 2012/07/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部