Android官方开发文档Training系列课程中文版:后台服务之IntentService的创建

原文地址:http://android.xsoftlab.net/training/run-background-service/index.html

引言

除非特别指定,否则所有的操作都是在UI线程中执行的。不过这会引起问题,因为长时间的耗时操作会妨碍UI线程的运行。这会惹恼用户,并可能会引起系统错误。为了避免这样的情况出现,Android为此提供了一些类,可以使这些耗时操作放在单独的线程中执行。这里用到最多的就是IntentService了。

这节课主要学习如何实现IntentService,以及如何向它发送工作请求,以及如何响应它的执行结果。

创建后台服务

IntentService提供了一个非常简单的构造方法。IntentService允许执行耗时操作,而又不会引起UI线程的阻塞。同样的,IntentService还不受UI生命周期的影响。所以它可以在一个单独的环境中持续运行。

不过IntentService也是有限制的,列举如下:

  • 它不可以与UI线程直接交互。为了将结果递送到UI,不得不采用广播的形式将结果发送出去。
  • 工作请求是按顺序执行的。如果目前已经有一个操作在IntentService中执行,那么再往其中发送操作请求的话,这些操作请求都将会等待,直至第一个操作完成。
  • IntentService中的操作不可以被中断。

不管怎样,大多数情况下,IntentService是执行后台操作的首选方式。

这节课主要学习如何实现IntentService,以及如何创建请求回调方法onHandleIntent(),最后我们还会学习如何在清单文件中声明该IntentService。

创建IntentService

首先需要创建一个类并继承IntentService,然后重写它的onHandleIntent()方法:

public class RSSPullService extends IntentService {@Overrideprotected void onHandleIntent(Intent workIntent) {// Gets data from the incoming IntentString dataString = workIntent.getDataString();...// Do work here, based on the contents of dataString...}
}

这里要注意普通Service的那些回调方法,比如onStartCommand()方法,它会被IntentService自动调用,所以在IntentService内部最好不要重写这些方法。

在清单文件中声明IntentService

IntentService同样需要在清单文件中定义。它的定义方式与普通Service是一样的。

    <application       android:icon="@drawable/icon"android:label="@string/app_name">...<!--Because android:exported is set to "false",the service is only available to this app.--><service           android:name=".RSSPullService"android:exported="false"/>...<application/>

其中android:name属性说明了IntentService的类名。

这里要注意:Service标签内并没有包含Intent Filter。因为其它组件是通过显示Intent发送工作请求的。所以这里不需要定义Intent Filter。这也意味着只有相关组件内的APP或者拥有相同用户ID的程序才可以访问该服务。

现在我们已经定义好了一个IntentService类,接下来就可以通过Intent对象向其发送工作请求了。关于如何构建相关对象以及如何发送请求到IntentService的相关内容将会在下节课学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美团服务体验平台对接业务数据的最佳实践-海盗中间件

背景 移动互联网时代&#xff0c;用户体验为王。美团服务体验平台希望能够帮助客户解决在选、购、用美团产品过程中遇到的各种问题&#xff0c;真正做到“以客户为中心”&#xff0c;为客户排忧解难。但服务体验平台内部只维护客户的客诉数据&#xff0c;为了精准地预判和更好地…

中文近义词工具包:Synonyms

Synonyms Chinese Synonyms for Natural Language Processing and Understanding. 更好的中文近义词&#xff1a;聊天机器人、智能问答工具包。 synonyms可以用于自然语言理解的很多任务&#xff1a;文本对齐&#xff0c;推荐算法&#xff0c;相似度计算&#xff0c;语义偏移…

惊了,掌握了这个炼丹技巧的我开始突飞猛进

文 | 夕小瑶从不拖稿的小夕今天在知乎上刷到一个问题&#xff1a;哈&#xff1f;一向求真务实、高逼格讨论的知乎画风怎么突然就不一样了。我以为回答区会有这张图&#xff1a;▲如来神掌结果竟然没有&#xff01;知乎果然没有让我失望&#xff0c;还是一如既往的认真、严谨、有…

LeetCode 876. 链表的中间结点(快慢指针)

1. 题目 给定一个带有头结点 head 的非空单链表&#xff0c;返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 2. 解题 快慢指针法 class Solution { public:ListNode* middleNode(ListNode* head) {ListNode *fast head, *slow head;while(f…

Android官方开发文档Training系列课程中文版:后台服务之IntentService的使用

原文地址&#xff1a;http://android.xsoftlab.net/training/run-background-service/send-request.html 上节课我们学习了如何创建IntentService。这节课我们主要学习如何通过Intent使IntentService执行工作请求。Intent可以将任何数据交给IntentService处理。你可以在Activi…

技术动态 | 多模态知识图谱

本文转载自漆桂林老师的知乎专栏。原文链接&#xff1a;https://zhuanlan.zhihu.com/p/163278672作者&#xff1a;郑秋硕&#xff0c;漆桂林&#xff0c;王萌知识图谱技术已经被广泛用于处理结构化数据&#xff08;采用本体D2R技术&#xff09;和文本数据&#xff08;采用文本信…

美团配送系统架构演进实践

写在前面 美团配送自成立以来&#xff0c;业务经历了多次跨越式的发展。业务的飞速增长&#xff0c;对系统的整体架构和基础设施提出了越来越高的要求&#xff0c;同时也不断驱动着技术团队深刻理解业务、准确定位领域模型、高效支撑系统扩展。如何在业务高速增长、可用性越来越…

Python字符串模糊匹配库FuzzyWuzzy

Python字符串模糊匹配库FuzzyWuzzy 在计算机科学中&#xff0c;字符串模糊匹配&#xff08;fuzzy string matching&#xff09;是一种近似地&#xff08;而不是精确地&#xff09;查找与模式匹配的字符串的技术。换句话说&#xff0c;字符串模糊匹配是一种搜索&#xff0c;即使…

机器学习梗图大赏

文 | 白鹡鸰图 | 白鹡鸰 小轶大家好呀&#xff0c;我是日常遭到小轶摁头赶稿的白鹡鸰&#xff5e;最近的投稿高峰期各位都过得如何呢&#xff1f;白鹡鸰要偷偷爆料&#xff0c;最近的小轶可是超级辛苦的&#xff5e;不过白鹡鸰还很轻松&#xff0c;毕竟已经决定赶300天以后的dd…

Android官方开发文档Training系列课程中文版:后台服务之响应IntentService的处理结果

原文地址&#xff1a;https://developer.android.com/training/run-background-service/report-status.html 这节课主要学习如何将IntentService中的执行结果返回给请求点。一种推荐的方式就是使用 LocalBroadcastManager来实现&#xff0c;它会将所广播的Intent限制在APP内部…

论文浅尝 - ACL2020 | 用于关系三元组抽取的级联二进制标记框架

论文笔记整理&#xff1a;王中昊&#xff0c;天津大学。来源&#xff1a;ACL2020链接&#xff1a;https://arxiv.org/pdf/1909.03227.pdf摘要从非结构化文本中提取关系三元组是构建大规模知识图的关键。然而&#xff0c;对于同一句子中的多个关系三元组共享同一个实体的重叠三元…

美团客户端响应式框架 EasyReact 开源啦

前言 EasyReact 是一款基于响应式编程范式的客户端开发框架&#xff0c;开发者可以使用此框架轻松地解决客户端的异步问题。 目前 EasyReact 已在美团和大众点评客户端的部分业务中实践&#xff0c;并且持续迭代了一年多的时间。近日&#xff0c;我们决定开源这个项目的 iOS Ob…

Python中实现模糊匹配的魔法库:FuzzyWuzzy

参考链接&#xff1a;https://mp.weixin.qq.com/s/5qzPb7HOCfRRGJICYUsAOQ FuzzyWuzzy一个简单易用的模糊字符串匹配工具包。让你轻松解决烦恼的匹配问题&#xff01; 前言 在处理数据的过程中&#xff0c;难免会遇到下面类似的场景&#xff0c;自己手里头获得的是简化版的数…

LeetCode 897. 递增顺序查找树(中序遍历)

1. 题目 给定一个树&#xff0c;按中序遍历重新排列树&#xff0c;使树中最左边的结点现在是树的根&#xff0c;并且每个结点没有左子结点&#xff0c;只有一个右子结点。 示例 &#xff1a;输入&#xff1a;[5,3,6,2,4,null,8,1,null,null,null,7,9]5/ \3 6/ \ \2 4…

谈谈怎样提高炼丹手速

文 | 夕小瑶最近搞定几件焦头烂额的大事后&#xff0c;终于有了一丢丢的时间来写写文章&#xff0c;并且偶尔思考下算法工程师的核心竞争力是什么。前不久一时兴起写了篇标题党文章《惊了&#xff01;掌握了这个炼丹技巧的我开始突飞猛进》&#xff0c;简单描述了一下我的升级打…

Android官方开发文档Training系列课程中文版:后台加载数据之使用CursorLoader进行查询

原文地址&#xff1a;http://android.xsoftlab.net/training/load-data-background/index.html 引言 在ContentProvider中查询数据是需要花点时间的。如果你直接在Activity进行查询&#xff0c;那么这可能会导致UI线程阻塞&#xff0c;并会引起”Application Not Responding”…

论文浅尝 | 神经协同推理

论文笔记整理&#xff1a;叶橄强&#xff0c;浙江大学计算机学院&#xff0c;知识图谱和知识推理方向。Paper link: https://arxiv.org/abs/2005.08129Github link: https://github.com/Scagin/NeuralLogicReasoning背景&#xff1a;推荐任务推荐作为一种认知智能任务&#xff…

在服务器上安装anaconda遇到的问题总结

1 安装anaconda需要一些安装包&#xff0c;需要提前备准备好&#xff0c;比如bunzip2&#xff0c; gcc编译等软件。 cd /anacondaRElyanacondaREly文件夹下放了anaconda所依赖的安装包&#xff0c;切换到该路径 rpm -Uvh *.rpm --nodeps --force安装好anaconda 需要的依赖环境…

LeetCode 693. 交替位二进制数(位运算)

1. 题目 给定一个正整数&#xff0c;检查他是否为交替位二进制数&#xff1a;换句话说&#xff0c;就是他的二进制数相邻的两个位数永不相等。 输入: 5 输出: True 解释: 5的二进制数是: 101输入: 7 输出: False 解释: 7的二进制数是: 111输入: 11 输出: False 解释: 11的二进…

全栈深度学习第6期: 模型测试和部署

一起追剧鸭简介Berkeley全栈深度学习追剧计划是由夕小瑶的卖萌屋发起的优质公开课打卡项目&#xff0c;通过微信群为同期追剧的小伙伴提供交流平台。关于该计划的详请见这里。Berkeley深度学习追剧群目前已有1000小伙伴加入&#xff0c;公众号后台回复口令 深度学习追剧 入群。…