服务

本文介绍了Android中服务的实现方式及其如何与活动通信的方法,同时深入探讨了Android多线程编程技巧,包括如何利用Message、Handler、MessageQueue、Looper等组件进行线程间通信,以及如何使用AsyncTask简化UI操作。

服务


Android中实现程序后台运行的解决方案。依赖于创建服务时所在的应用程序进程。需要在服务的内部手动创建子线程,并在这里执行具体的任务。

Android多线程编程

想要更新程序中的UI元素,必须在主线程中进行,不能在子线程中进行。Android提供了一套异步消息处理机制,可以解决在子线程中进行UI操作的问题。

异步消息处理机制

四个部分组成:
Message 、Handler、 MessageQueue、Looper。

Message
是线程之间传递的消息,用于在不同线程之间交换数据。

Handler
主要用于发送和处理消息的。
这里写图片描述
使用Handler的sendMessage()方法,发出的消息经过一系列地辗转处理后,最终会传递到Handler的handleMessage()方法中。

MessageQueue
消息列队。主要用于存放所有通过Handler发送的消息。只会有一个其对象。

Looper
每个线程中的MessageQueue管家。只有一个。

AsyncTask

可以更方便我们在子线程中对UI进行操作。其是一个抽象类,若想使用它,就必须要创建一个子类去继承它。

服务

  1. 新建一个服务
    这里写图片描述
    这里写图片描述
    若想要服务自己停下来,只需要在MyService的任何一个位置调用stopSelf()方法就可以了。

  2. 活动和服务通信
    创建一个专门的Binder对象来进行管理。
    这里写图片描述
    这里写图片描述
    创建一个ServiceConnection的匿名类,在里面重写onServiceDisconnected()方法和onServiceConnected()方法,这两个方法分别会在活动与服务成功绑定以及连接断开的时候调用。
    这里写图片描述

前台服务

会在系统状态栏中显示出来。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值