文档看的不够细,没有发现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时,系统会创建一个新的工作线程,所有的Intent都会在这个线程中按顺序执行。这种设计确保了任务的串行化,避免了并发问题。下面我们将详细分析IntentService的生命周期和工作流程。 1. 生命...
创建一个IntentService,首先需要继承IntentService并重写onHandleIntent()方法。这个方法会在工作线程中执行,用于处理传入的Intent。例如: ```java public class MyIntentService extends IntentService { ...
在【标题】"IntentService实现,使用代码"和【描述】"一个IntentService的简单使用"中,我们可以深入探讨IntentService的基本概念、优点、工作原理以及如何在实际项目中使用。 1. **IntentService基本概念** ...
1. 单线程:IntentService内部维护了一个工作队列,所有通过startService()发送的Intent都会被放入这个队列,依次进行处理,确保了任务的串行执行,避免了并发问题。 2. 自动停止:当工作队列中的所有任务都执行...
在Android应用开发中,IntentService是一个非常重要的组件,它继承自Service,并且简化了后台服务的处理流程。IntentService主要用于执行单一的任务或者一系列串行任务,而不会长时间占用主线程,提高了应用的响应...
在Android应用开发中,`Service`和`IntentService`是两个关键组件,它们用于在后台执行长时间运行的任务,不依赖于用户界面。本篇将详细阐述`Service`和`IntentService`的用法以及需要注意的要点。 首先,我们来...
在"IntentService+retrofit2.0下载文件"的场景中,我们可以创建一个自定义的IntentService,重写`onHandleIntent(Intent intent)`方法,在这里执行文件下载的逻辑。当IntentService接收到启动服务的Intent时,就会...
1. **单线程模型**:IntentService内部使用了一个工作队列和一个工作线程,保证同一时间只有一个Intent被处理,避免了多线程并发的问题。 2. **自动停止**:IntentService在`onHandleIntent()`方法处理完Intent后会...
service中1需要手动开启子线程2服务开启之后会一直运行,需要手动调用stopService();或者stopSelf(); intentService是一种异步(子线程)、自动停止的服务,这个例子测试IntentService的特征
IntentService的主要特点在于它自动管理了一个工作线程,接收到启动请求后,在这个工作线程中执行任务,完成后自动停止服务,避免了手动管理和停止服务的繁琐步骤。这样既保证了UI线程不被阻塞,又遵循了Android应用...
总的来说,IntentService是Android开发者处理后台任务的一个强大工具,尤其适用于那些不需要长时间运行的服务。通过结合日志输出,开发者可以更好地了解服务的运行状态,优化应用性能,提高用户满意度。在实际项目中...
在Android开发中,IntentService是一个特殊的Service子类,它的设计主要目的是为了简化异步任务的执行,特别是那些一次性、不需要用户交互的任务。IntentService的主要特点在于它会自动管理线程和消息队列,使得...
在Android应用开发中,IntentService是一个非常重要的组件,它继承自Service,并且专门设计用于执行后台的单一任务。"IntentService1"这个示例显然旨在教你如何使用IntentService来处理异步任务,避免阻塞主线程,...
在Android应用开发中,IntentService是一个非常重要的组件,它继承自Service类,专门用于执行后台的单线程任务,尤其适合处理那些可能阻塞主线程的操作,如网络请求、文件下载等。IntentService的设计旨在避免主线程...
IntentService是一个单线程的服务,专门用于执行后台任务。它的优点在于自动管理线程的生命周期,任务完成后会自动停止服务,避免了资源浪费。使用IntentService只需重写`onHandleIntent`方法,将任务放入其中。...
1. 单线程执行:IntentService内部维护了一个工作队列,所有的Intent都会被放入这个队列,然后在一个单独的工作线程中逐一处理。这确保了所有任务按顺序执行,避免了线程安全问题。 2. 自动启动和停止:当...
接下来我们将深入探讨这两个概念及其在实际开发中的应用场景。 IntentService是一个特殊的Service,专为执行单一任务而设计,尤其适合处理耗时的操作,如网络请求、数据同步等。它的核心特点在于工作在单独的工作...
在实际开发中,当需要在后台进行一系列有序操作且不需要与客户端交互时,使用IntentService是一个理想的选择。 总结来说,Service是Android系统中用于后台运行任务的基础,但需要开发者手动处理线程和生命周期管理...
- 创建IntentService子类:首先需要创建一个新的类,继承自IntentService,然后重写onHandleIntent()方法,这个方法是处理Intent的主要位置。 - 启动IntentService:通过startService()方法传递Intent启动...