`
zhuixinjian
  • 浏览: 66572 次
  • 性别: Icon_minigender_1
  • 来自: 湖北人在北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

谁用到过IntentService这个玩意,能否给一个应用场景?

阅读更多

文档看的不够细,没有发现IntentService这个玩意。简单的看了下源码:

 

继承service的抽象类

 

abstract class IntentService extends Service

 在onCreate里面起了一个线程

 

HandlerThread thread = new HandlerThread("IntentService[" + mName + "]");
        thread.start();

 然后用thread的looper起了一个Handler

 

mServiceLooper = thread.getLooper();
mServiceHandler = new ServiceHandler(mServiceLooper);

 在onStart里面,将启动的Intent交给ServiceHandler处理

 

 @Override
    public void onStart(Intent intent, int startId) {
        Message msg = mServiceHandler.obtainMessage();
        msg.arg1 = startId;
        msg.obj = intent;
        mServiceHandler.sendMessage(msg);
    }

 

在ServiceHandler的handleMessage里面交给抽象方法onHandleIntent处理start的消息

 

@Override
        public void handleMessage(Message msg) {
            onHandleIntent((Intent)msg.obj);
            stopSelf(msg.arg1);
        }

protected abstract void onHandleIntent(Intent intent);

 

在onHandleIntent完了stopSelf

 

 

 

整个看下来是一个Service+Thread+handle的结合体,

Service:比Activity的被kill的级别低

Thread:不阻塞UI线程

Handle:队列式的消息循环

 

那这个玩意的使用场景会是什么样的?由于所有的任务都在同一个Thread looper里面来做,所以不符合多个数据同时请求的场景。最佳场景是做离线数据下载,把所有的任务都往这个Service里面扔就可以了。

 

 

 

分享到:
评论

相关推荐

    IntentService简单应用

    当启动IntentService时,系统会创建一个新的工作线程,所有的Intent都会在这个线程中按顺序执行。这种设计确保了任务的串行化,避免了并发问题。下面我们将详细分析IntentService的生命周期和工作流程。 1. 生命...

    IntentService

    创建一个IntentService,首先需要继承IntentService并重写onHandleIntent()方法。这个方法会在工作线程中执行,用于处理传入的Intent。例如: ```java public class MyIntentService extends IntentService { ...

    IntentService实现,使用代码

    在【标题】"IntentService实现,使用代码"和【描述】"一个IntentService的简单使用"中,我们可以深入探讨IntentService的基本概念、优点、工作原理以及如何在实际项目中使用。 1. **IntentService基本概念** ...

    IntentService写一个应用切到后台也正常运行的Service

    1. 单线程:IntentService内部维护了一个工作队列,所有通过startService()发送的Intent都会被放入这个队列,依次进行处理,确保了任务的串行执行,避免了并发问题。 2. 自动停止:当工作队列中的所有任务都执行...

    IntentService学习Demo

    在Android应用开发中,IntentService是一个非常重要的组件,它继承自Service,并且简化了后台服务的处理流程。IntentService主要用于执行单一的任务或者一系列串行任务,而不会长时间占用主线程,提高了应用的响应...

    service和Intentservice示例

    在Android应用开发中,`Service`和`IntentService`是两个关键组件,它们用于在后台执行长时间运行的任务,不依赖于用户界面。本篇将详细阐述`Service`和`IntentService`的用法以及需要注意的要点。 首先,我们来...

    IntentService+retrofit2.0下载文件、更新APP(项目一部分demo)

    在"IntentService+retrofit2.0下载文件"的场景中,我们可以创建一个自定义的IntentService,重写`onHandleIntent(Intent intent)`方法,在这里执行文件下载的逻辑。当IntentService接收到启动服务的Intent时,就会...

    android 中的服务Service intentService例子

    1. **单线程模型**:IntentService内部使用了一个工作队列和一个工作线程,保证同一时间只有一个Intent被处理,避免了多线程并发的问题。 2. **自动停止**:IntentService在`onHandleIntent()`方法处理完Intent后会...

    Android中IntentService的特征

    service中1需要手动开启子线程2服务开启之后会一直运行,需要手动调用stopService();或者stopSelf(); intentService是一种异步(子线程)、自动停止的服务,这个例子测试IntentService的特征

    IntentService模拟上传图片

    IntentService的主要特点在于它自动管理了一个工作线程,接收到启动请求后,在这个工作线程中执行任务,完成后自动停止服务,避免了手动管理和停止服务的繁琐步骤。这样既保证了UI线程不被阻塞,又遵循了Android应用...

    Android—IntentService

    总的来说,IntentService是Android开发者处理后台任务的一个强大工具,尤其适用于那些不需要长时间运行的服务。通过结合日志输出,开发者可以更好地了解服务的运行状态,优化应用性能,提高用户满意度。在实际项目中...

    android IntentService实现原理及内部代码分享

    在Android开发中,IntentService是一个特殊的Service子类,它的设计主要目的是为了简化异步任务的执行,特别是那些一次性、不需要用户交互的任务。IntentService的主要特点在于它会自动管理线程和消息队列,使得...

    IntentService1

    在Android应用开发中,IntentService是一个非常重要的组件,它继承自Service,并且专门设计用于执行后台的单一任务。"IntentService1"这个示例显然旨在教你如何使用IntentService来处理异步任务,避免阻塞主线程,...

    详解Android中IntentService的使用方法

    在Android应用开发中,IntentService是一个非常重要的组件,它继承自Service类,专门用于执行后台的单线程任务,尤其适合处理那些可能阻塞主线程的操作,如网络请求、文件下载等。IntentService的设计旨在避免主线程...

    Android线程,线程池,AsyncTask,HandlerThread和IntentService的用法

    IntentService是一个单线程的服务,专门用于执行后台任务。它的优点在于自动管理线程的生命周期,任务完成后会自动停止服务,避免了资源浪费。使用IntentService只需重写`onHandleIntent`方法,将任务放入其中。...

    android IntentService 的学习例子

    1. 单线程执行:IntentService内部维护了一个工作队列,所有的Intent都会被放入这个队列,然后在一个单独的工作线程中逐一处理。这确保了所有任务按顺序执行,避免了线程安全问题。 2. 自动启动和停止:当...

    IntentService 和ResultReceiver

    接下来我们将深入探讨这两个概念及其在实际开发中的应用场景。 IntentService是一个特殊的Service,专为执行单一任务而设计,尤其适合处理耗时的操作,如网络请求、数据同步等。它的核心特点在于工作在单独的工作...

    深入剖析Android系统中Service和IntentService的区别

    在实际开发中,当需要在后台进行一系列有序操作且不需要与客户端交互时,使用IntentService是一个理想的选择。 总结来说,Service是Android系统中用于后台运行任务的基础,但需要开发者手动处理线程和生命周期管理...

    Android中的IntentService简介.pdf

    - 创建IntentService子类:首先需要创建一个新的类,继承自IntentService,然后重写onHandleIntent()方法,这个方法是处理Intent的主要位置。 - 启动IntentService:通过startService()方法传递Intent启动...

Global site tag (gtag.js) - Google Analytics