继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

万千封印
关注TA
已关注
手记 90
粉丝 13
获赞 64

开启处理耗时操作的方法--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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP