文档章节

bindService的小结

p
 passengers
发布于 2017/07/07 16:29
字数 392
阅读 2
收藏 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
0
Android中BindService方式使用的理解

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

大凉龙雀
2013/03/02
0
0
android服务类 Service

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

乱取名字
2015/12/28
80
0
Android中BindService方式使用的理解

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

大凉龙雀
2013/04/04
0
0
服务的生命周期回调方法

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

长平狐
2012/10/09
38
0

没有更多内容

加载失败,请刷新页面

加载更多

74.expect脚本同步文件以及指定host同步文件 构建分发系统文件和命令

20.31 expect脚本同步文件: 在expect脚本中去实现在一台机器上把文件同步到另外一台机器上去。核心命令用的是rsync ~1.自动同步文件 #!/usr/bin/expect set passwd "123456" spawn rsync -a...

王鑫linux
18分钟前
0
0
TypeScript项目引用(project references)

转发 TypeScript项目引用(project references) TypeScript新特性之项目引用(project references) 项目引用是TypeScript 3.0中的一项新功能,允许您将TypeScript程序构建为更小的部分。 通过这...

durban
23分钟前
0
0
爬虫入门

导读 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取...

问题终结者
23分钟前
0
0
ppwjs之bootstrap文字排版:无序列表项不换行

<!DOCTYPT html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title>ppwjs欢迎您</title><link rel="icon" href="/favicon.ico" ......

ppwjs
30分钟前
0
0
SpringBoot 学习一

本文将从以下几个方面介绍: 前言 HelloWorld 读取配置文件 例子(CURD) 前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架...

tsmyk0715
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部