服务
Android中实现程序后台运行的解决方案。依赖于创建服务时所在的应用程序进程。需要在服务的内部手动创建子线程,并在这里执行具体的任务。
Android多线程编程
想要更新程序中的UI元素,必须在主线程中进行,不能在子线程中进行。Android提供了一套异步消息处理机制,可以解决在子线程中进行UI操作的问题。
异步消息处理机制
四个部分组成:
Message 、Handler、 MessageQueue、Looper。
Message
是线程之间传递的消息,用于在不同线程之间交换数据。
Handler
主要用于发送和处理消息的。
使用Handler的sendMessage()方法,发出的消息经过一系列地辗转处理后,最终会传递到Handler的handleMessage()方法中。
MessageQueue
消息列队。主要用于存放所有通过Handler发送的消息。只会有一个其对象。
Looper
每个线程中的MessageQueue管家。只有一个。
AsyncTask
可以更方便我们在子线程中对UI进行操作。其是一个抽象类,若想使用它,就必须要创建一个子类去继承它。
服务
新建一个服务
若想要服务自己停下来,只需要在MyService的任何一个位置调用stopSelf()方法就可以了。活动和服务通信
创建一个专门的Binder对象来进行管理。
创建一个ServiceConnection的匿名类,在里面重写onServiceDisconnected()方法和onServiceConnected()方法,这两个方法分别会在活动与服务成功绑定以及连接断开的时候调用。
前台服务
会在系统状态栏中显示出来。