学习笔记《第一行代码》——第10章 服务

服务是什么

服务是实现程序后台运行的解决方案
依赖于创建服务时所在的应用程序进程,当进程被杀掉时服务也会停止运行


Android多线程编程

如何定义一个线程?

方法一:

新建一个类继承Thread,然后重写父类的run()方法

class MyThread extends Thread{

    public void run () {
        // 处理具体的逻辑
    }
}

然后调用start()方法来运行

new MyThread().start();

方法二:

class MyThread implements Runnable(){

    public void run(){
        // 处理具体逻辑
    }
}

启动线程的方法

 MyThread myThread = new MyThread();
 new Thread(mThread).start;

方法三:

这种方法是使用匿名类

new Thread(new Runnable(){

    public void run(){
        // 处理具体的逻辑
    }
}).start();

PS:子线程不能直接更新UI

异步消息处理机制

异步消息处理主要分为4个部分组成:Message ,Handler ,MessageQueue ,Looper

Message

  • 在内部携带少量信息,用于不同线程之间交换数据

Handler

  • 用于发送和处理信息
  • 发送一般使用Handler的sendMessage()方法,而发送的消息经过一些列地辗转处理后,最终会传递到Handler的handleMessage()方法

MessageQueue

  • 用于存放通过Handler发送的消息的消息队列
  • 每个线程只会有一个MessageQueue对象

Looper

  • 每个线程中MessageQueue的管家
  • 调用Looper的loop()方法后,就会进入到一个无线循环中,每当发现队列中存在一条消息,就会将它取出,并传递到Handler的handleMessage()方法
  • 每个线程只有一个Looper对象

使用AsyncTask

用于在子线程中对UI进行操作的工具

AsyncTask的基本用法
创建一个子类去继承它
继承时我们可以为AsyncTask指定三个泛型参数

Params
在执行AsyncTask时需要传入的参数,可用于在后台任务中使用

你可能感兴趣的:(学习日志)