位置: 编程技术 - 正文

Android IntentService解析

编辑:rootadmin
Android IntentService解析

推荐整理分享Android IntentService解析,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

在开发安卓应用程序时,除非你指定,否则绝大部分执行动作都运行UI线程中。这种机制会引发一些问题,因为耗时操作会妨碍用户交互行为。这会让用户感到懊恼,甚至引发ANR错误。幸运的是,Android框架提供了一些类,它帮助我们把这些耗时的操作到转移到后台线程中去了。个人觉得最有用的是IntentService类了,但IntentServce也有它的几个局限性: 1. 它不能和用户界面直接交互,你必须把执行的结果发送到Activity中 2. 发送给IntentService的请求是有序的。如果IntentService正在处理任务A,而你又发送了一个任务B请求,此时IntentService只有等到执行完任务A后才会执行任务B。 3. IntentService中正在运行的操作不能被中断。

尽管IntentService有些局限性,但执行简单的后台操作是一个比较好的选择,下面为大家讲述如何使用IntentService。

创建一个IntenService

创建一个IntentService非常简单,只要写一个继承IntentService的类即可,并实现构造方法以及onHandleIntent(Intent workIntent)抽象方法即可。

因为onHandleIntent(Intent workIntent)方法运行在后台一个线程中,你可以把耗时的任务转到此处而不必担心它会阻塞UI线程。任务做完后它会自动停止服务。

注册IntentService

仅仅创建了IntentService依然无法使用,你需要在清单文件中去注册它。

Android IntentService解析

现在你写的IntentService类就可以使用了,那么怎样使用呢?很简单,你可以通过一个显式意图去启动IntentService,你可以在意图中添加相关的数据以支持你的业务逻辑。

一旦你调用了startService(),IntentService就会执行onHandleIntent(),任务结束后服务也就自动停止。

在IntentService中发送广播

那么耗时的任务数据状态通过怎样的形式才能呈现给用户呢?一种方式是你可以通过发送广播来实现。通过广播将任务产生的状态数据发送到广播接收器,在接收器中可以将数据呈现到UI上。

接受广播发送过来的数据

为了接受广播发送过来的数据,你需要创建一个类,该类继承BroadcastReceiver类,并实现onReceive()方法。

广播接收器一旦定义好后,你可以定义过滤器以区分动作事件

要保证广播接收器能够接受到消息,必须对其进行注册,一般在Activity中onCreate()中对其进行注册,在onDestory()中注销。

LocalBroadcastManager发送的广播只能在程序内被接受因此它能够有效减低信息泄露。

Android开发——入门1 在网易云课堂上找到一个特别适合像我这种Android菜鸟入门的学习视频,链接

ListView大全 ArrayAdapter方式设置listview利用android自带listview的xml设置简单的listView思路:MainActivity继承ListActivity,并且在onCreate方法中,首先设置contentView()在activity_main

Android优化 摘要:Android应用优化主要集中在内存和UI流畅度上,从内存占用与泄露、UI流畅度的帧数和响应时间到IO的阻塞式响应时间等,腾讯移动性能评测专家叶

标签: Android IntentService解析

本文链接地址:https://www.jiuchutong.com/biancheng/384195.html 转载请保留说明!

上一篇:Android下的单元测试(android下的单元测试要配置以下说法不正确的是)

下一篇:Android开发——入门1(android开发菜鸟教程)

  • 关联方的借款用什么科目核算
  • 房地产企业环保税什么时候申报
  • 一般税收协定是多少
  • 借贷记账法的基本结构
  • 红冲以前年度的费用怎么做账
  • 公款私存个人账户怎么处理
  • 小微企业印花税减免最新政策
  • 抵扣红冲发票怎么报税
  • 餐饮无票收入怎么做账
  • 公司车辆出售给个人怎么做账
  • 公司用货币资金做账
  • 服装厂委托物资零散加工成品如何做账呢?
  • 代交社保费会计账务处理
  • 净利润提盈余公积
  • 企业留存收益包括盈余公积和未分配利润
  • 增值税发票增量流程网上怎么申请
  • 增值税计税依据包含消费税吗
  • 营改增行业注释
  • 鉴证咨询公司成本是什么
  • 个人借款给公司利息多少合法
  • 直接快递到国外的货物如何收汇?
  • 住宿费算业务招待费还是差旅费?
  • 以前年度应扣未扣支出
  • 建筑施工企业跨区域如何缴税
  • 原始凭证日期大写要求
  • 华为鸿蒙一键抠图
  • 预征率3%
  • 怎么安装win7系统后怎么安装驱动
  • 酒店采购布草如何入账
  • 劳务报酬纳税计算器
  • 金融资产的会计处理方法
  • 有趣的css代码
  • 安装了sklearn调用却找不到
  • elements vue
  • php定义字符串的三种方式
  • 转让企业要交什么税
  • labelme目标检测
  • 职工教育经费是否可以抵扣进项税
  • 电汇收款的会计分录
  • 利润表管理费用包括哪些内容
  • 分公司负责人如何开展工作的
  • 一般纳税人零申报怎么报税步骤
  • 报关单填制相关规范相关文件
  • 处置可供出售金融资产原先进入公允价值变动损益
  • 破产的产业要退回资金吗?
  • 从事特殊行业
  • 事业单位是怎样向上申请招人的
  • 以前年度损益调整账务处理分录
  • 新老税法
  • 材料合理损耗计入入账价值吗
  • 福利费需要发票吗
  • 账本更正方法
  • 支付职工培训费是什么科目
  • 酒店客人损坏物品不赔偿怎么报警
  • 现金存入银行凭证怎么写
  • 母公司销售给控股子公司
  • 注销公司剩余的钱怎么办
  • 安装mysql失败原因
  • sql server 错误
  • mysql5.7.29安装
  • 被遗忘的战役
  • 微软历代操作系统
  • Windows Server 2008中审核和符合性
  • Usrshuta.exe - Usrshuta是什么进程
  • ubuntu的终端在哪
  • debian yum安装
  • mac系统终端命令大全
  • win7检测有错误怎么办
  • linux系统问题汇总
  • win7系统连不了网络
  • 高效的python
  • ant编译工具
  • javascript中的原型和原型链
  • ajaxfrom表单提交
  • reg add命令
  • python2.7多进程
  • javascript的dom操作
  • Python运行报错此段代码无法访问
  • 票种核定和税种核定的区别
  • 出口免税不退税主要适用于
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设