IntentService

18人阅读 评论(0) 收藏 举报
分类:

一般的服务都是运行在主线程中的,如果要想在服务中直接处理耗时任务,就容易出现ANR

所以一般都是开启一个线程处理:(部分代码如下)

@Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                //处理耗时
                
                stopSelf(); //服务一旦运行起来,必须调用stop方法才能停下来,如果想让服务自动处理完停止,就在这加上stop
            }
        }).start();

        Log.i("mydate" , "onstartcommand");
        return super.onStartCommand(intent, flags, startId);
    }

但是我们经常会忘记开启线程,和自动调用stop方法停止线程

这个时候有一个IntentService类可以同时解决这两个问题(自动创建的有多余代码,要手动创建)

onHandleIntent()该方法处于线程,所以可以直接在方法中处理耗时逻辑

重写onDestroy()方法,可以自动停止服务,  部分代码如下:

public class MyIntentService extends IntentService {
    public MyIntentService() {
        super("MyIntentService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        Log.i("mydate" , "可以在这里直接处理耗时任务,不用开启主线程");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.i("mydate" , "服务自动停止了");
    }
}
Intent intent = new Intent(MainActivity.this , MyIntentService.class);
        startService(intent); //启动服务




查看评论

Handler与HandlerThread、IntentService源码解析

在前面的博客当中为大家分析过了Handler的源码,今天这篇博客的主要内容是为大家结合HandlerThread讲述一下Handler的另外一种比较酷炫的用法,以及这种酷炫的用法又是如何结合Servi...
  • freedom13905149949
  • freedom13905149949
  • 2016-05-26 22:30:06
  • 366

【IntentService】原理解析

为何要用IntentServiceIntentService主要是用来处理耗时的任务。 那么可能有的人会说,为何我不使用开一个线程或者其他来方式来实现呢?因为IntentService继承自Servi...
  • qq_18402085
  • qq_18402085
  • 2016-02-26 23:12:35
  • 1043

IntentService及其优点

IntentService是Service的子类,比普通的Service增加了额外的功能。先看Service本身存在两个问题:Service不会专门启动一条单独的进程,Service与他所在应用位于同...
  • qq_23077365
  • qq_23077365
  • 2016-08-21 20:34:40
  • 1395

Android 多线程之IntentService 完全详解

转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52334098 出自【zejian的博客】 关联文章: A...
  • javazejian
  • javazejian
  • 2016-09-04 07:58:14
  • 12398

IntentService使用详解和实例介绍

IntentService的定义、原理和内部调用过程,实例说明。
  • Amazing7
  • Amazing7
  • 2016-05-13 13:56:53
  • 9840

IntentService介绍及使用

IntentService是一个通过Context.startService(Intent)启动可以处理异步请求的Service,使用时你只需要继承IntentService和重写其中的onHandl...
  • nalw2012
  • nalw2012
  • 2016-02-25 18:19:10
  • 3753

Android开发--IntentService的用法,你错过了什么

IntentService是Android中提供的后台服务类,我们在外部组件中通过Intent向IntentService发送请求命令,之后IntentService逐个执行命令队列里的命令,接收到首...
  • smbroe
  • smbroe
  • 2015-04-12 14:12:29
  • 4752

IntentService,用完即走

IntentService     IntentService,可以看做是Service和HandlerThread的结合体,在完成了使命之后会自动停止,适合需要在工作线程处理UI无关任务的场景。...
  • iromkoear
  • iromkoear
  • 2017-03-18 12:36:36
  • 5492

IntentService无法用bindService

在做adb工厂测试的一个apk的时候,要求用socket连接返回测试结果。那么apk中需要建立一个ServerSocket等待adb命令行的命令,当处理完后,需要通过socket返回给adb。这时,a...
  • Landon_Xu
  • Landon_Xu
  • 2016-08-10 14:10:54
  • 1307

Android之在IntentService中执行后台程序

说明——关于四大组件之一的Service,对它的基本用法不熟悉的可以去看看这个博客!Service完全解析除非我们特别为某个操作指定特定的线程,否则大部分在前台UI界面上的操作任务都执行在一个叫做UI...
  • jxq1994
  • jxq1994
  • 2016-09-21 22:49:59
  • 1207
    个人资料
    持之以恒
    等级:
    访问量: 976
    积分: 593
    排名: 8万+
    文章存档
    最新评论