IntentService 的使用与解析

本文详细介绍了IntentService的使用方法和源码解析。IntentService是一个在后台运行并自动管理线程的Service,简化了异步任务处理。文章通过实例展示了IntentService的创建和启动,验证了其运行在子线程中,并在任务完成后自动停止。接着,深入源码探讨了IntentService如何利用Handler和Looper实现线程切换以及停止Service的机制。
摘要由CSDN通过智能技术生成

前言

IntentService 本质上也属于 Service,它可以说是一个使用起来更为简单的 Service。在我们基本的 Service 使用过程中,我们需要在 Service 中自己开启子线程进行耗时操作,并且在 Service 执行结束后还要调用 stopSelfstopService 方法来关闭 Service,而使用 IntentService 的话,这些问题将通通不需要关注。因为 IntentService 内部就是默认执行在子线程中的,并且在执行结束后它会帮我们自动停止 Service

在学习本章知识的时候,你需要先知晓以下知识点:

  1. Service的基本使用
  2. Android的异步消息处理机制

如果你对这两块知识点还不够熟悉的话,可以点击上面的超链接进行学习,那么接下来就让我们开始 IntentService 的学习吧,首先我们学习一下它的使用。

IntentService 的使用

IntentService 的使用和 Service 非常的相似,也比 Service 更加简单,我们接下来创建一个 MyIntentService 类,并继承自 IntentService。它的代码如下:

public class MyIntentService extends IntentService {
   

    private static final String TAG = MyIntentService.class.getSimpleName();

    public MyIntentService() {
   
        super("MyIntentService");
    }

    @Override
    public void onCreate() {
   
        super.onCreate();
        Log.d(TAG,"onCreate");
    }

    @Override
    protected void onHandleIntent(@Nullable Intent intent) {
   
        Log.d(TAG, "onHandleIntent's thread: " + Thread.currentThread());
    }

    @Override
    public void onDestroy() {
   
        super.onDestroy();
        Log.d(TAG, "onDestroy");
    }

}

我们对里面的 3 个生命周期中的方法进行重写,它们分别是 onCreateonHandleIntentonDestroy。如果你之前学习过 Service 的话,对 onCreateonDestroy 应当是相当熟悉的了,它们就是分别对应于 IntentService 启动时和停止时的方法。而 onHandleIntent 则比较陌生了,其实这个方法就是我们在 IntentService 中执行主要逻辑的方法,它默认是运行在子线程中的。这里我们对这 3 个方法只是简单地打印 Log,特别的我们会打印出 onHandleIntent 的线程,验证它是否真的运行在子线程中。

接下来我们就为 MainActivity 中添加一个按钮,通过按钮来调用 startService 方法来启动我们的 IntentService,代码如下:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
   

    private Button startServiceBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值