学习笔记《第一行代码》——第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对象

>w<

使用AsyncTask

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值