handle实现异步任务和handle原理解析

这篇博客探讨了Android中Handler的作用,它作为消息传递器用于更新UI、阻塞线程以及处理异步任务。作者通过注释展示了如何使用Handler实现数字自增长的动画效果以及进度条的动态加载。同时,文中还展示了如何利用Runnable和Handler配合来实现定时任务,并提供了开始和停止相应功能的点击事件处理。
摘要由CSDN通过智能技术生成

handle 我理解的意思就是消息传递器,他可以实现更新ui和阻塞线程,发送消息等等,我注释掉的代码是异步任务处理,没注释的是利用handle控制ui的自增实现数字自增长和充电效果。

package com.example.handel;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    public static final String TAG = "MainActivity";
    private TextView text;
    final static int Test = 1;
    private TextView tvtext;
    private int count = 0;
    ProgressBar progressBar = null;
    Handler handler = new Handler();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = findViewById(R.id.hello);
//        new ActivityThread().start();

        findViewById(R.id.start).setOnClickListener(this);
        findViewById(R.id.stop).setOnClickListener(this);
        findViewById(R.id.prgsta).setOnClickListener(this);
        findViewById(R.id.prgstop).setOnClickListener(this);
        progressBar = findViewById(R.id.prg);
        tvtext = findViewById(R.id.tvcount);
    }
//    Handler handler = new Handler(){
//        public void handleMessage(Message message){
//            switch (message.what){
//                case Test:
//                    text.setText("工作线程");
//                    break;
//            }
//        }
//    };

    Runnable mRunCount = new Runnable() {
        @Override
        public void run() {
            tvtext.setText("count:"+String.valueOf(++count));
            handler.postDelayed(mRunCount,1000);
        }
    };

    Handler prgHandler = new Handler(){
        public void handleMessage(Message message) {
            Log.d("消息内容为",""+message.arg1);
            progressBar.setProgress(message.arg1);
            prgHandler.post(PrgThread);
            if (message.arg1 >=100) {
                removeCallbacks(PrgThread);
            }
        }
    };
    public void log(String str) {
        Log.d(TAG,str);
        }

    Runnable PrgThread = new Runnable() {
        int i =0;
        @Override
        public void run() {
            i=i+10;
            Message msg = prgHandler.obtainMessage();
            msg.arg1 = i;
            try {
                Thread.sleep(1000);

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            prgHandler.sendMessage(msg);
        }
    };
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.start:
                handler.postDelayed(mRunCount,1000);
                break;

            case R.id.stop:
                handler.removeCallbacks(mRunCount);
                break;
            case R.id.prgsta:
                prgHandler.post(PrgThread);
                break;
            case R.id.prgstop:
                prgHandler.removeCallbacks(PrgThread);
                break;
        }
    }

//    class ActivityThread extends Thread{
//        public void run(){
//            try {
//                Thread.sleep(3000);
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
//            Message message = new Message();
//            message.what = 1;
//            handler.sendMessage(message);
//        }
//
//
//
//    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信工院李平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值