Android服务创建步骤是什么,Android Service详解(二)---StartService

2023-10-28

一丶概述

启动服务由另一个组件通过调用 startService() 启动,这会导致调用服务的 onStartCommand() 方法。

服务启动之后,其生命周期即独立于启动它的组件,并且可以在后台无限期地运行,即使启动服务的组件已被销毁也不受影响。 因此,服务应通过调用 stopSelf() 结束工作来自行停止运行,或者由另一个组件通过调用 stopService() 来停止它。

应用组件(如 Activity)可以通过调用 startService() 方法并传递 Intent 对象(指定服务并包含待使用服务的所有数据)来启动服务。服务通过 onStartCommand() 方法接收此 Intent。

例如,假设某 Activity 需要将一些数据保存到在线数据库中。该 Activity 可以启动一个协同服务,并通过向 startService() 传递一个 Intent,为该服务提供要保存的数据。服务通过 onStartCommand() 接收 Intent,连接到互联网并执行数据库事务。事务完成之后,服务会自行停止运行并随即被销毁。

注意:默认情况下,服务与服务声明所在的应用运行于同一进程,而且运行于该应用的主线程中。 因此,如果服务在用户与来自同一应用的 Activity 进行交互时执行密集型或阻止性操作,则会降低 Activity 性能。 为了避免影响应用性能,您应在服务内启动新线程。

二丶StartService分类

从传统上讲,可以扩展两个类来创建启动服务:

1.Service

这是适用于所有服务的基类。扩展此类时,必须创建一个用于执行所有服务工作的新线程,因为默认情况下,服务将使用应用的主线程,这会降低应用正在运行的所有 Activity 的性能。

2.IntentService

这是 Service 的子类,它使用工作线程逐一处理所有启动请求。如果您不要求服务同时处理多个请求,这是最好的选择。 您只需实现 onHandleIntent() 方法即可,该方法会接收每个启动请求的 Intent,使您能够执行后台工作。

三丶StartService启动服务的步骤

(如果你使用的是Android Studio那么很好,你可以直接new一个Service出来)

1.创建一个Service(跟你创建一个JAVA类一样的简单方便)

d24915ccf9196a8d7e7c956d955a8afd.png

在创建的时候有两个属性选择

1,Exported:可扩展,外部可以调用这个Service;

2,Enable:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android服务创建步骤是什么,Android Service详解(二)---StartService 的相关文章

  • C# 中如何判断线程是否结束

    为了测试获取网页源码 使用C 编写程序 为了最大限度的增加获取的次数 于是采用了多线程的方式 C 中很容易实现多线程 其实现方式与Java的实现方式基本一样 但是在功能上提供的方法更多一些 在编程的过程中 在主线程中启动了多个线程后 往往想
  • 14. Helm2&3的使用

    文章目录 Helm介绍 Helm部署 Helm自定义Chart模板 Helm的Debug 该文档内容来源于尚硅谷K8S教学视频课件尚硅谷 仅用于知识整理 便于后续巩固复习 如有侵权 请联系本人删除 需要注意的是 这套尚硅谷教学视频中使用的是
  • 自监督学习-对比学习-MoCo Momentum Contrast 阅读笔记

    Momentum Contrast for Unsupervised Visual Representation Learning 原文地址 CVPR 2020 Open Access Repositoryhttps openaccess
  • matplotlib.pyplot.imshow()函数在深度学习中可视化的运用

    matplotlib pyplot imshow 函数介绍 plt imshow X cmap None norm None aspect None interpolation None alpha None vmin None vmax
  • IDEA打包时clean报错

    现象 控制台报Failed to clean project Failed to delete 原因 target文件可能时编译的文件被其他程序占用 导致资源无法回收 解决方案 1 在开始搜索框中输入 资源监视器 切换到CPU页面 在关联的
  • 844--Backspace String Compare

    public class BackspaceStringCompare 解法一 从头扫描 用栈的思想 遇到 则出栈 public static boolean backspaceCompare String S String T retur
  • Uni-app一课一得

    近年来移动设备的普及 各种操作系统层出不穷 Android iOS Windows Phone 甚至是Web 提供的开发语言与框架也千差万别 为了能够将原有代码跨平台运行 我们需要寻找一种适用于多个平台的开发方式 当前最流行的解决方案之一便
  • 把二叉树打印成多行

    来源 我是码农 转载请保留出处和链接 本文链接 http www 54manong com id 1233 题目描述 从上到下按层打印二叉树 同一层结点从左至右输出 每一层输出一行 void BinaryTreeLevelOrder BTN
  • 【深度学习】windows 10 配置 python 3.5 的 tensorflow(cpu) 的使用

    1 推荐安装Python3 5 或者 3 6 2 参考 Python Windows 安装 Python2 7 2 首先更新pip 在cmd内敲下面代码更新pip python m pip install upgrade pip 3 没问题
  • C++ 中std::bitset的使用总结

    背景 在项目实践过程中某个功能通常需要维护一系列的状态标志 0 或者 1 若设置多个 bool 参数来保存一组状态会比较繁琐 此时可以使用二进制位来表示一组状态 std bitset bitset是 C 中的一个类库 来管理一系列bit位
  • 【一些使用的常见问题】

    一些使用的常见问题 使用Vue开发的Web页面四周有留白 如何去除 一般调试可以发现这里的留白是由body的margin带来的 这种大多是使用脚手架帮助构建项目的 在project name public index html中 添加如下代
  • C++ 大话设计之《外观者模式》(优缺点,设计原理,常用场景)

    外观者模式是一种 结构型模式 优点 它可以简化客户端与子系统之间的交互 使得客户端更容易使用子系统 它可以降低客户端与子系统之间的耦合度 使得客户端不需要直接与子系统类交互 它可以在不影响客户端的情况下改变子系统的实现 缺点 它可能会限制客
  • OpenCV实战5: LBP级联分类器实现人脸检测

    OpenCV中的HAAR与LBP数据 HAAR特征数据 参看 haarcascade frontalface alt xml 各标签 LBP特征数据 参看 lbpcascade frontalface xml 各标签 HAAR与LBP的区别
  • Python实现爬虫设置代理IP和伪装成浏览器的方法分享

    Python实现爬虫设置代理IP和伪装成浏览器的方法分享 1 python爬虫浏览器伪装 1 2 3 4 5 6 7
  • 别再说“换皮”了,来看看HarmonyOS与Android的全面对比吧

    鸿蒙的争议一直挺大的 很多人都说是换皮 很多做鸿蒙技术分享的博客下面的评论区都吵得不可开交 我们交流圈里也有很多人发表自己的看法 下面是其中一个大佬在圈里的分享 一 前言 华为自己对于鸿蒙系统的定位是完全不同于安卓系统的 它不仅是一个手机或
  • stream流对集合排序,多字段排序(升序和降序)(空值排到最后)

    1 实体类 2 集合数据 student student4 new student student4 setId 4 student4 setName 4 student student5 new student student5 setI
  • SyntaxError: unexpected EOF while parsing解决方法

    SyntaxError unexpected EOF while parsing 意思是 语法错误 分析时出现意外的EOF 循环结束不了 我遇到的问题是 在读取文件中的str类型时 将其通过eval 转换成数值类型出现错误 eval 函数是
  • 华为tftp服务器如何配置文件,配置tftp服务器

    配置tftp服务器 内容精选 换一换 当您以云模式或独享模式添加防护网站后 如果需要修改防护网站的服务器信息或者需要添加服务器信息时 可以修改服务器配置信息 本章节可对以下场景提供指导 修改服务器信息 即修改对外协议 源站协议 VPC 源站
  • Unix环境编程中的apue.h和err_quit、err_sys问题

    现在开始学习 Unix环境编程 这本书 在学习的时候总会遇到书中的程序编译时会出现问题 所以自己将遇到的问题及解决的方法进行总结 找不到头文件apue h和err qiut err sys 1 apue h是作者自定义的一个头文件 并不是U

随机推荐

  • clang 命令行生成 Token、Ast 与 IR

    clang notes 查看编译过程 clang ccc print phases main m 词法分析生成 Token clang fmodules E Xclang dump tokens main m 语法分析生成语法树 AST c
  • QT UI布局设置汇总

    一 设置边距的方法 1 设置容器边框和内部控件的边距 a 可以通过设置setContentsMargins方法 设置容器myQwidget QWidget 内部margin ui gt myQwidget gt setContentsMar
  • Redis使用总结(一、几点使用心得)

    本文围绕以下几点进行阐述 1 为什么使用redis 2 使用redis有什么缺点 3 单线程的redis为什么这么快 4 redis的数据类型 以及每种数据类型的使用场景 5 redis的过期策略以及内存淘汰机制 6 redis和数据库双写
  • QT 在release 模式下构建项目使用断点调试

    pro文件内 release断点测试 QMAKE CXXFLAGS RELEASE QMAKE CFLAGS RELEASE WITH DEBUGINFO QMAKE LFLAGS RELEASE QMAKE LFLAGS RELEASE
  • Word2Vec 的一些理解

    Hierachical Softmax 思想 Hierachical Softmax 的基本思想 将词典中的每个词按照词频大小构建出一棵 Huffman 树 保证词频较大的词处于相对较浅的叶子节点 词频较低的词处于相对较深的叶子节点 这样就
  • jdk8 Stream流中将集合转成map,重复key处理,统计最大值,获取某个属性集合等10种最常用方法

    1 list转map 指定key value key value是对象中的某个属性值 Map
  • android java代码输出调用堆栈

    RuntimeException e new RuntimeException scheduleTraversalLocked is here e fillInStackTrace Log d TAG scheduleTraversalLo
  • 为什么高斯核参数多

    看到知乎上一个问题的回答下有 RBF核 主要用于线性不可分的情形 参数多 分类结果非常依赖于参数 请问参数多主要体现在哪里呢 公式里面不就一个sigma平方吗 RBF核 主要用于线性不可分的情形 参数多 分类结果非常依赖于参数 这里的参数是
  • velocity 语法简记

    前几天接触了一个相对老一些的项目 渲染模板用的velocity 之前并没有接触过这个模板 所以也难免踩了踩坑 现在把页面上用到的一些语法总结一下 包括if for set等 希望可以给同道中人带来一点点帮助 说明 velocity使用 作为
  • Mac之parallels安装centos显示操作失败

    Mac之parallels安装centos显示操作失败 Parallels17安装遇到网络和操作失败 Parallels Desktop17 1 1安装经常遇到网络初始化失败和操作失败问题 可以根据下面提供方案进行解决 网络初始化失败处理方
  • f@()的意思

    表示 f 为函数句柄 是定义句柄的运算符 1 一维函数 f x acos x 相当于建立了一个函数文件 f m function y f x y acos x 是匿名函数的意思 函数句柄的使用方法也和函数是一样的 2 二维函数 3 仅表示函
  • 登陆界面的前台与后台

    JSP页面 1 form表单提交到 通过name 传递input数据 2 servlet request去get 这个name 3 servlet 得到数据后将多个表单数据set到对象中 调用对象定义方连接数据库去实现数据的核对操纵判断是否
  • 剑指 Offer 20. 表示数值的字符串(java+python)

    请实现一个函数用来判断字符串是否表示数值 包括整数和小数 数值 按顺序 可以分成以下几个部分 若干空格 一个 小数 或者 整数 可选 一个 e 或 E 后面跟着一个 整数 若干空格 小数 按顺序 可以分成以下几个部分 可选 一个符号字符 或
  • 使用python抓取liaoxuefeng网站正文和目录

    本文档参考了该博客和其源代码 不过为了方便 我没有使用beautifulsoup和pdfkit 而是直接通过python自带的HTMLParser来处理html 然后解析出html中的主体内容 然后重新生成一个新的html 并重命名为章节内
  • 【单片机毕业设计】【mcuclub-dz-054】基于单片机的多功能密码锁控制系统设计

    最近设计了一个项目基于单片机的多功能密码锁控制系统设计 与大家分享一下 一 基本介绍 项目名 基于单片机的多功能密码锁的设计 单片机 STM32F103C8T6 功能简介 1 通过4 4的矩阵键盘中的0 9为数字键 为删除键 为确定键 A为
  • 蓝牙mesh消息中的三种model: server models、client models、control models

    server models 服务器模型是在设备上运行的一个软件组件 负责管理和存储设备的状态信息 同时接受来自客户端的请求并进行响应 服务器模型定义了设备的功能和行为 并向网络中的其他设备发布其状态信息 比如发布一些state的消息 cli
  • Alexandru Popescu谈InfoQ.com网站架构

    概要 在QCon伦敦2008会议的采访中 InfoQ首席架构师Alexandru Popescu谈论了InfoQ的架构 WebWork与DWR的集成 Hibernate与JCR Hibernate可扩展性 MySQL拷贝 最新 InfoQ视
  • Java实现龟兔赛跑

    使用继承Thread的方式来实现龟兔赛跑游戏 我们首先来看一下需求 开始编写代码 首先我们创建一个动物抽象类Animal 在Animal中定义一个runing的抽象方法 注意 这里面有一个回调方法 定义它的目的就是当任意一方跑完200m后
  • [区块链]以太坊手动添加静态节点

    如果每次都向某个节点同步区块 可以手动的添加为静态节点 这样可以大大的提高同步效率 这里套用一下https blog csdn net weixin 40903789 article details 79619646的私链 感谢 我就不用再
  • Android服务创建步骤是什么,Android Service详解(二)---StartService

    一丶概述 启动服务由另一个组件通过调用 startService 启动 这会导致调用服务的 onStartCommand 方法 服务启动之后 其生命周期即独立于启动它的组件 并且可以在后台无限期地运行 即使启动服务的组件已被销毁也不受影响