在前面了解了什么是多线程和异步消息处理机制后,我们来看一下到底什么是Service。

1. 什么是service(service的作用)
一个服务是一个具有较长生命周期但没有用户界面的程序,例如:一个正在从播放列表中播放歌曲的媒体播放器在后台运行
service用于在后台完成用户指定的操作,一般不需要与用户交互
2. 分类
service分为两种:
started(启动):当应用程序组件(如activity)调用startService方法启动服务时,服务处于started状态
bound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态
3. 注意,service也是需要在配置文件中(比如AndroidManifest.xml)注册的,例如
<service
android:name=".MyService"
android:enabled="true"
android:exported="true"></service>
4.定义一个service(如何在项目中定义一个服务)
新建一个ServiceTest项目,然后右击com.example.servicetest→New→Service→Service,在弹出的创建服务
窗口中,Exported属性表示是否允许除了当前程序之外的其他程序访问该服务,enabled属性表示是否启用这个服务。

MyService.java中的代码:
public class MyService extends Service {

public MyService() {
}

@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}

}

MyService继承自Service类,所以也是一个服务。onBind()方法是Service中唯一一个抽象方法,所以必须在子类
里实现。
重写Service中的一些其他方法
public class MyService extends Service {

public MyService() {
}

@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}
//onCreate(), onStartCommand(),onDestory()是服务中最常用的3个方法
//onCreate()会在服务创建时调用
@Override
public void onCreate() {
super.onCreate();
}
//onStartCommand()在每次服务启动时调用,如果我们希望服务一旦启动就执行某个action,就可以将逻辑写在
//onStartCommand()方法里面
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
//onDestory()在服务销毁时调用,在服务销毁时,我们要在onDestory()中回收那些不再使用的资源
@Override
public void onDestroy() {
super.onDestroy();
}

}
onCreate()和onStartCommand()的区别:
onCreate()在服务第一次创建时调用
onStartCommand()在每次启动服务时都会调用

Android四大组件之 --- Service入门的更多相关文章

  1. 【Android开发日记】之入门篇(五)——Android四大组件之Service

    这几天忙着驾校考试,连电脑都碰不到了,今天总算告一段落了~~Service作为Android的服务组件,默默地在后台为整个程序服务,辅助应用与系统中的其他组件或系统服务进行沟通.它跟Activity的 ...

  2. Android四大组件之Service

    Android四大组件之Service Android支持服务的概念,服务是在后台运行的组件,没有用户界面,Android服务可用有与活动独立的生命周期.Android支持两种类型的服务: 本地服务: ...

  3. Android成长日记-Android四大组件之Service组件的学习

    1.什么是Service? Service是Android四大组件中与Activity最相似的组件,它们都代表可执行的程序,Service与Activity的区别在于:Service一直在后台运行,它 ...

  4. Android 四大组件之service与Broadcast

    Android 四大组件之一:service: Service有五个生命周期:onCreat,onStartCommand, onBind,onUnbind, onDestroy 主要有绑定和非绑定两 ...

  5. Android四大组件之一Service介绍-android学习之旅(十二)

    基本概念: service是android四大组件之一,运行在后台执行耗时操作,并不提供用户界面.其他组件如acticity可以通过startService启动该组件,也可以通过bindService ...

  6. Android四大组件之一 -- Service详解

    相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了.Service作为Android四大组件之一,在每一个应用程序 ...

  7. Android四大组件:Service

    前言 Service作为Android四大组件之一,应用非常广泛 本文将介绍对Service进行全面介绍(基础认识.生命周期.使用和应用场景) 目录 目录 1. 基础知识 定义:服务,属于Androi ...

  8. Android四大组件之Service浅见

    Service 是Android四大组件之一,可以在不显示界面的情况下在后台运行.还有一个作用是通过AIDL来实现进程间通信. Service的启动方式 Service的启动方式有两种,startSe ...

  9. Android 四大组件之Service

    ---恢复内容开始--- 1,Service的生命周期

随机推荐

  1. 20165306 Exp4 恶意代码分析

    Exp4 恶意代码分析 一.实践概述 1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生 ...

  2. MySQL单表多次查询和多表联合查询,哪个效率高?

    很多高性能的应用都会对关联查询进行分解. 简单地,可以对每个表进行一次单表查询,然后将结果在应用程序中进行关联.例如,下面这个查询: select * from tag join tag_post o ...

  3. Vue-admin工作整理(十五):Ajax-跨域问题

    跨域的定义: 解决方法: 1.前端通过配置来解决跨域问题:自定义的vue.config.js配置文件来进行跨域处理:就是只要存在跨域现象 都会代理到一个指定的地址上 devServer: { prox ...

  4. Socket编程 之使用fsockopen()函数

    fsockopen函数:初始化一个套接字连接到指定主机(hostname) get方式: client.php <?php //创建连接 $fp=fsockopen('localhost',80 ...

  5. WebvirtCloud安装(CentOS7)

    1.安装依赖包wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repoyum -y install p ...

  6. C# 数组,对象实例化并赋值

    [数组] 数组实例化,并赋值时,可以省略new[]. ]; --未赋值 ,}; --赋值 [对象] 对象实例化,并赋值时,可以省略(). class test { public string name ...

  7. 因为没有安装xcode,得不到xcode证书报错

    新接的一个项目.在从gitlab上clone代码的时候报错: Agreeing to the Xcode/iOS license requires admin privileges, please r ...

  8. warmpserver 配置别人能访问自己的项目地址

    1.首先必须给自己的ip和域名地址给别人,绑定hosts  如:10.33.31.20 www.bai.com 2.找到apache 的  httpd.conf  . 用notepadd打开,然后找到 ...

  9. vue页面传值

    第一种情况:例:消息列表页(路由)跳转: methods: { goTo(){ this.$router.push({ name:'/My/Info', query:{ 'tellSeq':this. ...

  10. css实现横向带箭头步骤流程效果

    通过纯css实现圆角的步骤流程效果,扩展性强,可以随意增加减少数量,兼容性ie6+. 具体代码: <style type="text/css"> ul{margin:0 ...