目录

学习Service相关知识点:

  1. 概述;
  2. Service生命周期;
  3. Service的基本用法;
  4. 服务。
  • 问:达叔,今日工作累吗?
  • 答:累啊,那么问你,你知道Android中的
    Service(服务)吗?~

  • 问:哥,这么干的吗?
  • 答:呵呵,是的,~

概述:

在Android中Service是一个在后台执行长时间运行操作,而不需要和用户交互的应用程序组件。主要是用来后台处理网络事务,播放音乐,执行文件操作和content provider进行交互等。

  • 答:简要地说,Service的运行不依赖任何用户界面,是一直保持在后台运行的。
    如果当某个应用程序被关闭时,所有依赖于该应用的服务也就会停止了~
  • 问:哦~

对于,Service服务的分两种类:

一:Started Service,二:Bound Service。(英文理解:开启服务,绑定服务)。这两种服务各有各的特色。不过在理解之前,先看看它们的生命周期情况(图片来源于官方):

可以看出两种启动方式区别:

Call to startService -> onCreate() -> onStartCommand() -> Service running -> onDestroy()

Call to bindService() -> onCreate() -> onBind() -> onUnbind() -> onDestroy()

从中可以看出:

一:使用startService()方法启动服务,调用onStartCommand()方法启动Service,启动Service的组件与Service没有联系,所以关闭组件,后台的Service也在运行中。

二:使用bindService()方法绑定来启动服务,调用onBind()方法来启动,将启动Service的组件和Service绑定在一起,关闭组件则Service会停止。

  • 问:那有什么要注意的吗?
  • 答:其实这两种方法并不冲突,使用startService()启动Service后,可以再使用bindService()方法进行绑定
    到时,你在调用stopService()或自身stopSelf()方法和unBindService()方法就行,注重创建与销毁,才能更好理解~

Service的基本用法:

创建一个Service类,重写 onCreate(),onStartCommand(),oonDestroy(),这三种通常使用的方法。

定义一个MyService的类,代码如下:

补充说明:

Service(服务)默认是执行主线程,不是默认运行在子线程,和进程中。如果要进行耗时操作,那么就要在开启子线程操作和使用异步消息处理机制。

不然会出现主线程被(ANR)的情况,ANR为应用无反应。

在创建Service时,系统会自动在配置文件对MyService进行注册:

可利用Intent可以启动和停止Service:

  • 问:对于Service内容可以回顾一下吗?
  • 答:额,一:对于Started Service,当一个组件调用startService()方法请求服务时,系统会调用它的生命周期方法,启动后,会在后台无限期运行下去,直到完成工作调用stopSelf()或stopService()方法来终止服务的~

  • 问:嗯,好的~
  • 答:额,二:对于Bound Service的启动,当其它组件调用bindService()进行绑定服务时,系统会调用它的生命周期方法,,其中有客户端绑定到Service,那么客户端通过IBinder接口与服务进行通信,客户端通过unbindService()方法进行断开连接,调用onUnbind()方法解绑定,系统调用onDestroy()方法来销毁~

对于掌握Service(服务)知识点。
Service用于后台执行用户指定的操作。
学习不是速成,内容理解,多练多用多查多看即可。

喜欢本文的朋友们
欢迎关注,点赞
收看更多精彩内容

关于Android的Service知识点,你知道吗?的更多相关文章

  1. Android 保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护

    本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ↳Android.content.Context  ↳an ...

  2. Android服务(Service)研究

    Service是android四大组件之一,没有用户界面,一直在后台运行. 为什么使用Service启动新线程执行耗时任务,而不直接在Activity中启动一个子线程处理? 1.Activity会被用 ...

  3. Android中Service 使用详解(LocalService + RemoteService)

    Service 简介: Service分为本地服务(LocalService)和远程服务(RemoteService): 1.本地服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外L ...

  4. android 入门-Service实时向Activity通过BroadcastReceiver传递数据

    引文: http://www.cnblogs.com/linjiqin/p/3147764.html <RelativeLayout xmlns:android="http://sch ...

  5. android 入门-Service

    sdk 1.7 package com.example.hellowrold; import java.util.Random; import com.example.hellowrold.R.id; ...

  6. Android中Service(服务)详解

    http://blog.csdn.net/ryantang03/article/details/7770939 Android中Service(服务)详解 标签: serviceandroidappl ...

  7. Android中Service的使用

    我个人的理解是:我们平时使用的android系统的app的后台应用,就是这个原理 可以利用Service实现程序在后台运行,依照这个原理,可以通过Service来实现关键代码的运行与实现. <一 ...

  8. 【Android 】Service 全面总结

    1.Service的种类 按运行地点分类: 类别 区别  优点 缺点   应用 本地服务(Local) 该服务依附在主进程上,  服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外L ...

  9. Android Activity/Service/Broadcaster三大组件之间互相调用

    我们研究两个问题,1.Service如何通过Broadcaster更改activity的一个TextView.(研究这个问题,考虑到Service从服务器端获得消息之后,将msg返回给activity ...

随机推荐

  1. Node Sass does not yet support your current environment解决办法

    在React项目中,使用了sass.之前运行的好好的,今天突然报错,提示当前环境不支持sass模块,然后就百度了下,发现有相同问题的.原来问题是之前开发时node是6.x的版本,几天前更新到最新10. ...

  2. [Redis]Redis的五种数据类型与键值/服务器相关命令

    -------------------------------------------------------------------------------------- String(字符串):最 ...

  3. Python程序互斥体

    Python程序互斥体   有时候我们需要程序只运行一个实例,在windows平台下我们可以很简单的用mutex实现这个目的.   在开始时,程序创建了一个命名的mutex,这个mutex可以被其他进 ...

  4. 联想电脑t450,t460p,t470等安装好ubuntu后启动找不到系统

    其实我是这样解决的: 进入bios: 关quick start 关security 然后reboot就可以了

  5. LR基础理论详解

    本人参考了大神的博客(https://blog.csdn.net/cyh_24/article/details/50359055),写的非常详细,在此整理一下要点 逻辑斯蒂分布 基础公式了解 二项逻辑 ...

  6. 获取MessageBox按钮本地字符串(OK、Cancel、Yes、No等)

    问题仍然由定制MessageBox引发. 定制MessageBox,虽加入自定义些东西,但仍然希望,最大限度接近系统原生框.碰到的问题,就是其钮文本. 即如MessageBox.Show()之Mess ...

  7. canvas(三) star- demo

    /** * Created by xianrongbin on 2017/3/8. * 本例子使用渐变画出 璀璨星空 */ var dom = document.getElementById('clo ...

  8. adc指令

    adc是带进位加法指令,它利用了CF位上记录的进位值. 指令格式: adc 操作对象1,操作对象2 功能:操作对象1 = 操作对象1 + 操作对象2 + CF 例如指令 adc  ax,bx实现的功能 ...

  9. Linux下安装Hadoop

    第一步: Hadoop需要JAVA的支持,所以需要先安装JAVA 查看是否已安装JAVA 查看命令: java -version JRE(Java Runtime Environment),它是你运行 ...

  10. JQuery复习心得

    this === event.currentTarget    event.stopPropagation  阻止冒泡  http:www.css88.com JQ和原生JS入口函数的区别: 书写个数 ...