创建一个服务,并与活动绑定

作为安卓四大组件之一的服务,毫无例外也要在manifast中进行注册

  • 新建服务类继承于Service,并覆盖onBind( )方法,用于与活动绑定
public class MySevice extends Service {

    //创建DownloadBinder对象mBinder
private DownloadBinder mBinder = new DownloadBinder(); //创建DownloadBinder类,实现服务中需要等待活动指示来执行的方法
class DownloadBinder extends Binder {
  //必须是pubilc修饰的方法
public int getProcess() {
return 0;
}
} @Nullable
@Override
//返回DownloadBinder对象mBinder
public IBinder onBind(Intent intent) {
return mBinder;
} @Override
//创建服务时执行
public void onCreate() {
Toast.makeText(this, "服务创建成功", Toast.LENGTH_LONG).show();
super.onCreate();
} @Override
//启动服务时执行
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "服务启动成功", Toast.LENGTH_LONG).show();
return super.onStartCommand(intent, flags, startId);
} @Override
//关闭服务时执行
public void onDestroy() {
Toast.makeText(this, "服务关闭成功", Toast.LENGTH_LONG).show();
super.onDestroy();
}
}
  • 在Activity中找到传递过来的mBinder对象
    private MySevice.DownloadBinder mDownloadBinder;
//创建匿名内部类ServiceConnection(),重写方法onServiceConnected(),onServiceDisconnected()分别在绑定和取消绑定时调用
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
//向下转型,找到mDownloadBinder对象,并调用对象中的public方法
mDownloadBinder = (MySevice.DownloadBinder) service;
mDownloadBinder.getProcess();
} @Override
public void onServiceDisconnected(ComponentName name) { }
};
  • 绑定服务与活动
    Intent thread_bind_service = new Intent(ThreadDemoActivity.this, MySevice.class);
bindService(thread_bind_service,mConnection,BIND_AUTO_CREATE);
/* bindService()方法接收三个参数,第一个参数就是刚刚构建出的 Intent 对象,
* 第二个参数是前面创建出的 ServiceConnection 的实例,
* 第三个参数则是一个标志位,这里传入 BIND_AUTO_CREATE 表示在活动和服务进行绑定后自动创建服务
*/
  • 解除绑定
  unbindService(mConnection);

Android四大组件之服务的更多相关文章

  1. Android四大组件之服务-Service 原理和应用开发详解

    一.Android 服务简介 Service是android 系统中的四大组件之一(Activity.Service.BroadcastReceiver.ContentProvider),它跟Acti ...

  2. Android四大组件之服务的两种启动方式详解

    Service简单概述 Service(服务):是一个没有用户界面.可以在后台长期运行且可以执行操作的应用组件.服务可由其他应用组件启动(如:Activity.另一个service).此外,组件可以绑 ...

  3. Android 四大组件 Service 服务

    1.Service简单介绍 依照使用范围分类: 类别 优点 缺点 差别 应用 本地服务 Local  Service 本地服务在一定程度上节约了资源,另外本地服务由于是在同一进程,因此不须要IPC,也 ...

  4. Android学习之基础知识十三 — 四大组件之服务详解第一讲

    一.服务是什么 服务(Service)是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务.服务的运行不依赖于任何用户界面,即使程序被切换到后台, ...

  5. 入职小白随笔之Android四大组件——服务(Service)

    Service Android多线程编程 当我们在程序中执行一些耗时操作时,比如发起一条网络请求,考虑到网速等原因,服务器未必会立刻响应我们的请求,此时我们就需要将这些操作放在子线程中去运行,以防止主 ...

  6. Android四大组件之一“广播”

    前言 Android四大组件重要性已经不言而喻了,今天谈谈的是Android中的广播机制.在我们上学的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦有什么重要的通知,就 ...

  7. Android 四大组件 与 MVC 架构模式

    作为一个刚从JAVA转过来的Android程序员总会思考android MVC是什么样的? 首先,我们必须得说Android追寻着MVC架构,那就得先说一下MVC是个啥东西! 总体而来说MVC不能说是 ...

  8. android四大组件(简单总结)

    activity 一个Activity通常就是一个单独的屏幕(窗口) Activity之间通过Intent进行通信 android应用中每一个Activity都必须要在AndroidManifest. ...

  9. Android 四大组件之再论service

    service常见的有2种方式,本地service以及remote service. 这2种的生命周期,同activity的通信方式等,都不相同. 关于这2种service如何使用,这里不做介绍,只是 ...

随机推荐

  1. [JQuery] Using skill in JQuery

    Using skill of JQuery 获取兄弟节点 $('#id').siblings() 当前元素的所有兄弟节点 $('#id').prev() 当前元素的前一个兄弟节点 $('#id').p ...

  2. 用python计算直角三角形斜边长

    直接上代码 import math def hypotenuse(a,b): return(math.sqrt(a**2+b**2)) side1 = int(input("第一条直角边:& ...

  3. pandas error记录随笔

    1.sys:1: DtypeWarning: Columns (0,1) have mixed types. Specify dtype option on import or 解决办法:PANDAS ...

  4. vue指令总结(二)

    一.vue指令 1.v-text v-text是用于操作纯文本,它会替代显示对应的数据对象上的值.当绑定的数据对象上的值发生改变,插值处的内容也会随之更新.注意:此处为单向绑定,数据对象上的值改变,插 ...

  5. iframe高度随内容自适应的方法

    我们知道,iframe最大的问题,就是高度的问题,如果你内容的高度是变化,要么你就给你的容器写个固定的高度,如果内容是未知的,显然这个方法并不能达到我们的想要的效果,要么就是通过js来解决这个问题. ...

  6. Object.keys 函数 (JavaScript)

    Object.keys 函数 (JavaScript) 返回对象的可枚举属性和方法的名称. 在实际开发中,我们有时需要知道对象的所有属性,原生js给我们提供了一个很好的方法:Object.keys() ...

  7. POJ-1459 Power Network---最大流

    题目链接: https://cn.vjudge.net/problem/POJ-1459 题目大意: 简单的说下题意(按输入输出来讲,前面的描述一堆的rubbish,还用来误导人),给你n个点,其中有 ...

  8. 2017.12.19 Java包的静态导入import static和import的区别

    import static静态导入是JDK1.5中的新特性.一般我们导入一个类都用 import com-..ClassName;而静态导入是这样:import static com-..ClassN ...

  9. 说说qwerty、dvorak、colemak三种键盘布局

    [qwerty布局] qwerty布局大家应该都很熟悉了,全世界最普及的键盘布局. 截止到去年接触并使用dvorak布局之前,我使用了十几年qwerty布局,在http://speedtest.10f ...

  10. Excel自动从身份证中提取生日、性别、年龄

    现在学生的身份证号已经全部都是18位的新一代身份证了,里面的数字都是有规律的.前6位数字是户籍所在地的代码,7-14位就是出生日期.第17位“2”代表的是性别,偶数为女性,奇数为男性.我们要做的就是把 ...