Android学习——Service(二)
今天来介绍Service的第二种使用方式,Bind方式
Bind方式启动服务
Bind方式和Start方式启动很类似,都是通过Intent来启动,不同的是,Bind方式需要传入三个参数,如下:
Intent intent2 =new Intent(MainActivity.this,BindService.class);
bindService(intent2,conn,BIND_AUTO_CREATE);
其中conn为一个ServiceConnection对象,用于获取以Bind方式绑定的Service对象,其包含两个抽象函数,如下:
conn=new ServiceConnection()
{
@Override
public void onServiceConnected(ComponentName name, IBinder service)
{
bindservice=((BindService.MyBinder)service).getService();
} @Override
public void onServiceDisconnected(ComponentName name)
{ }
};
其中的onServiceDisconnected为当Service的绑定意外丢失时会调用,在该例中没有用到。
其中onServiceConnected为当ServiceConnextion对象和Service成功绑定时回调用的方法,其中的IBinder参数正是在Service中的onBind方法的返回值类型。故我们只需要在Service中,新建一个IBinder的子类,获取Service对象即可。
在Service中创建IBinder接口
public class BindService extends Service
{
public class MyBinder extends Binder
{
public BindService getService()
{
return BindService.this;
}
}
@Nullable
@Override
public IBinder onBind(Intent intent)
{
Log.d("Jinx","Bind");
return new MyBinder();
}
如上所示即可,其中Binder为IBinder的一个子类,我们的内部类继承Binder即可。
在Activity获取Service中的方法
在通过conn进行关联后,便可以方便地在Activity中调用Service中的方法,如下代码虚拟了一个音乐播放器为例:
Service中:
public void Play()
{
Log.d("Jinx","Play");
}
public void Pause()
{
Log.d("Jinx","Pause");
}
Activity中:
case R.id.play_bt:
bindservice.Play();
break;
case R.id.pause_bt:
bindservice.Pause();
break;
Android学习——Service(二)的更多相关文章
- Android学习总结(二)——Service基本概念和生命周期
好了,前面我们已经学习了Activity的知识,相信大家也有一定的理解,但是还是不能放松,Android四大组件,我们才学习了一个而已,接下我们继续学习Service.计划总结如下内容: 一.Serv ...
- Android学习Service中遇到的问题
今天学习service,然后遇到了一个force close,log中存在这个一句话: 05-23 14:13:26.408: E/AndroidRuntime(17616): android.con ...
- 【Android】完善Android学习(二:API 2.3.4)
备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...
- Android学习笔记二之初始Activity
初识Activity,跟着教程学习敲了一遍这一章的内容,下面根据目录结构总结知识点: 一.活动是什么 上篇博文中我们提到了Android四大组件,其中有一个Activity,我们将之称为活动.活动是最 ...
- Android学习——Service(一)
这篇博文来介绍Android另一个十分重要的组件,Service.Service和Activity很类似,区别在于它运行在后台,不可见且没有界面.Service的优先级高于Activity,当系统负载 ...
- android 学习随笔二十二(小结)
ADB进程 * adb指令 * adb install xxx.apk * adb uninstall 包名 * adb devices * adb start-server * adb kill-s ...
- android 学习随笔二十一(内容提供者 )
一.内容提供者* 应用的数据库是不允许其他应用访问的* 内容提供者的作用就是让别的应用访问到你的私有数据* 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查 ...
- android学习笔记二
ADT(Android Development Tools)安卓开发工具. android项目目录简介 ==> src==>源代码文件 res==>资源文件 AndroidManif ...
- Android学习(二)
学号 20189214 <Android程序设计>第七周学习总结 教材学习内容总结 监听 设置点击监听的5种方式 方法1:直接用匿名内部类 这是最常用的一种方法,直接setXXXListe ...
随机推荐
- java数据结构和算法学习笔记
第一章 什么是数据结构和算法 数据结构的概述 数据结构是指 数据再计算机内存空间或磁盘空间中的组织形式 1.数据结构的特性 数据结构 优点 缺点 数组 插入快,如果知道下标可以快速存取 查找和删除慢 ...
- maven 可执行jar maven-shade-plugin
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> ...
- 2019.03.29 读书笔记 关于params与可选参数
void Method1(string str, object a){} void Method2(string str, object a,object b) { } void Method3(st ...
- Express4.10.2开发框架中默认app.js的代码注释
//通过require()加载了express.path等模块var express = require('express');var path = require('path');var favic ...
- OSI与TCP/IP协议区别
1 OSI参考模型 谈到网络不能不谈OSI参考模型,虽然OSI参考模型的实际应用意义不是很大,但其的确对于理解网络协议内部的运作很有帮助,也为我们学习网络协议提供了一个很好的参考.在现实网络世界里,T ...
- LoadRunner使用
LoadRunner使用 软件版本:12.53 build 1203 操作系统: Windows7 以下内容摘录自LoadRunner的官方帮助文档. 介绍 LoadRunner现在是HP公司的产品, ...
- Shiro与Spring、Springmvc的整合
1.在web.xml中配置Shiro的filter 在web系统中,shiro也通过filter进行拦截.filter拦截后将操作权交给spring中配置的filterChain(过虑链儿) shir ...
- 常用Oracle的SQL语句20181206更新
--clob转字符串:dbms_lob.substr() --锁表:select object_name,machine,s.sid,s.serial# from v$locked_object l, ...
- Java入门系列-24-实现网络通信
互联网上那么多设备,java 是如何与其他设备通信的呢?这次的内容是网络通信的基础,有了它咱们才能上网页.玩游戏.视频聊天. Socket 客户端套接字 Socket 客户端套接字,用于连接互联网提供 ...
- 项目管理系列--从零开始Code Review[转]
从零开始Code Review 这篇帖子不是通篇介绍Code Review的方法论, 而是前大段记录了我们团队怎么从没有这个习惯到每天都进行review的过程, 后小段给出了我的一些建议. 希望能对诸 ...