在前面了解了什么是多线程和异步消息处理机制后,我们来看一下到底什么是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. 基于SVD的图像压缩

    算法简介 算法实现 我只是简单处理了一下图像的灰度值,如果要处理RGB值的话,就需要分别进行SVD分解,最后再合起来即可. import numpy as np from PIL import Ima ...

  2. 生信工具汇总--OMICtools

    各种生信工具: https://omictools.com/

  3. Codeforces 396 E. Valera and Queries

    题目链接:http://codeforces.com/problemset/problem/369/E 考虑将问题转化为有多少条线段没有覆盖这些点,如果一个询问的点集是${[x1,x2,...,xn] ...

  4. 通过java代码往mysql数据库中写入日期相关数据少13个小时

    通过show variables like '%time_zone%'; 查看时区: CST 时区 名为 CST 的时区是一个很混乱的时区,有四种含义: 美国中部时间 Central Standard ...

  5. 【笔记】Rancher2.1容器云平台新特性

    2018年10月6日,Rancher2.1版本正式发布.相比Rancher2.0版本,提供了许多新的特性: 1.支持集群和项目级别的硬件资源配额管理:2.支持3个节点的Rancher Server的管 ...

  6. regression | p-value | Simple (bivariate) linear model | 线性回归 | 多重检验 | FDR | BH | R代码

    P122, 这是IQR method课的第一次作业,需要统计检验,x和y是否显著的有线性关系. Assignment 1 1) Find a small bivariate dataset (pref ...

  7. hdu-1536 S-Nim SG函数

    http://acm.hdu.edu.cn/showproblem.php?pid=1536 给出能够取的方法序列,然后求基本石子堆问题. 只要用S序列去做转移即可. 注意has初始化的一些技巧 #i ...

  8. mysql将查询结果导出

    一.首先确认当前数据库设置导出是允许的 show variables like '%secure%'; 如果是null则代表不允许,这时可以用命令修改,或者直接修改数据库配置文件my.ini,在其中添 ...

  9. NodeJS基础(二)

    一.动态获取文件路径 var fs = require('fs') var path = require('path') // 一般在开发命令行工具的时候,这个设计是必须有用的一个特性 // npm ...

  10. C# 指定程序打开指定文件

    Process process = new Process(); process.StartInfo.FileName = 指定程序exe文件路径: process.StartInfo.Argumen ...