为了账号安全,请及时绑定邮箱和手机立即绑定

IntentService的简单使用 一种简单的处理耗时操作的Demo

标签:
Android

开启处理耗时操作的方法--IntentService

一、概述

  1. 能解决的问题:

  • 当一个任务分为多个小任务,这些小任务必须按照一定顺序来执行,而且这些任务可能会比较耗时

为什么选择这个方法:

  • 利用这个方法无需手动控制线程的执行顺序

  • 如果是一个后台任务,交给Service去执行,因为Service中也不能执行耗时操作,所以还是需要开启子线程开执行,使用这个方法就可以忽略这个问题

  • 当任务执行完毕后会自动关闭服务

  • 从Activity中发送Intent之后就可以丢给后台去处理,就算当前的Activity被finish掉也不会影响任务的执行


IntentService是一个基本类,用来处理异步请求(用Intents来传递的)的服务。客户端通过调用startService(Intent)来发送请求;当需要的时候service被启动,使用一个工作者线程来依次处理每一个Intent;当任务运行完毕之后会自动关闭。

这个“工作队列处理器”模式通常用来帮助处理应用的主线程中的任务。IntentService类是为了简化这个模式和照看结构而存在的。通过继承IntentService实现onHandleIntent(Intent)方法来使用它。IntentService将会接收Intents,创建一个工作者线程,并在适当的时候(任务结束的时候)停止服务。

所有的请求都被一个单独的工作者线程处理--他们或许需要足够长的时间来处理(并且不会阻塞应用的主循环),但是同一时间只能处理一个请求

三、IntentService的使用方法

当然到了最关心的了--用法

  1. 创建一个类,继承IntentService,注意的是这里需要写一个无参的构造方法,不然会报错

     public classHandleTaskServiceextendsIntentService {// 继承自父类的方法
         public HandleTaskService(String name) {         super(name);
         }     // 注:这里要添加
         public HandleTaskService(){         super("HandleTaskService");
         }
     }
  2. 实现最关键的处理方法

    @OverrideprotectedvoidonHandleIntent(Intent intent){     // 这里写你的代码处理逻辑
     }
  3. IntentService继承自Service,所以同样需要到AndroidManifest.xml中去注册

    <service android:name="com.hanvon.inputmethod.callaime.util.HandleTaskService" ></service>

  4. 调用方式:

     Intent intent = new Intent(this, HandleTaskService.class);
     intent.addFlags(101);
     intent.putExtra("content", content);
     startService(intent);

原文链接:http://www.apkbus.com/blog-813041-62869.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消