Android学习(七)Android多线程初学

多线程

开发中一定会需要用到多线程开发。当遇到耗时操作,如果都放在主线程就会造成app ANR,用户体验极差。所有我们需要把这些不需要对UI进行操作的开发放到子线程中。
后续会继续完善内容。

基本用法

继承Thread

  1. 继承Thread后,重写run()方法。
class TestThread extends Thread {

        @Override
        public void run() {
            super.run();
            //具体的逻辑处理
        }
    }
  1. 启动线程
new TestThread().start();

实现Runnable接口

  1. 实现接口
class TestRunnable implements Runnable {

        @Override
        public void run() {
            //具体的逻辑处理
        }
    }
  1. 启动线程
new Thread(new TestRunnable()).start();

异步消息处理 Handle

使用handle尽量使用弱引用,避免内存泄漏。这里我就偷懒,写个简单的。

1.创建一个handle对象,重写handleMessage()方法

private Handler handler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case 1:
                    Toast.makeText(FourthActivity.this, "handle 收到消息", Toast.LENGTH_SHORT).show();
                    break;
                default:
                    break;
            }
        }
    };
  1. 使用handle

调用handle的sendEmptyMessage()方法,他还有许多方法,大家可以查看。

handler.sendEmptyMessage(1);

这样handle就会收到这个消息,他有一套自己的异步处理机制,所以使用起来还是很方便的。

AsyncTask

Android还提供了AsyncTask供我们异步处理消息。它是一个抽象类,所以我们需要继承实现它。

  1. 创建继承AsyncTask
package com.example.testapplication;

import android.os.AsyncTask;

public class TestAsyncTask extends AsyncTask<Void, Integer, Integer> {

    @Override
    protected void onPreExecute() {
    }

    @Override
    protected Integer doInBackground(Void... voids) {
        return null;
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
    }

    @Override
    protected void onPostExecute(Integer integer) {
    }
}
方法名用途
onPreExecute()任务开始时执行,用于进行资源的准备和初始化。
doInBackground()在子线程中运行,用于执行耗时后台操作。
onProgressUpdate()在任务中调用publishProgress()方法后,更新UI界面操作。
onPostExecute()在任务结束返回return后,执行。用于UI界面操作及资源释放。
  1. 启动任务
new TestAsyncTask().execute();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值