IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android消息处理机制 -> 正文阅读

[移动开发]Android消息处理机制

1. 消息队列 Handler

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. Handler的消息传递机制

在这里插入图片描述
在这里插入图片描述
arg1\arg2传递int类型的值 obj传递对象

3. Handler的编程接口

在这里插入图片描述

4. Handler编程思路

1\主线程Activity创建Handler

private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            //处理消息,运行在创建它的线程中
            switch (msg.what){
                case 0x0001:
                    int index = msg.arg1;
                    test.setText(index+"");
                    break;
            }
        }
    };

2\实现子线程run()方法重写

public void login(View view){
        //使用线程完成
        //工作线程是一个匿名类
        new Thread(){//子线程不可更新UI线程中的控件属性
            @Override
            public void run() {
                for(int i=0;i<100;i++){
                    Message msg = new Message();
                    msg.what = 0X0001;//消息的what是消息标识,必须有
                    msg.arg1 = i;
                    handler.sendMessage(msg);
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }.start();
    }

---------------------------------------------------------------------------------------------------------------------------------

5. AsyncTask异步类

在这里插入图片描述

6. AsyncTask编程思路

1\创建方法继承AsyncTask,主线程中直接调用该方法即可实现

class MyTask extends AsyncTask<Void, Integer, Void>{

        @Override
        /**
         * 运行在后台,相当于是Thread中的run()方法
         * 运行在子线程中的方法
         */
        protected Void doInBackground(Void... voids) {
            for(int i=0;i<=100;i++){
                publishProgress(i);//传参数, 自动调用onProgressUpdate()方法
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }

        @Override
        /**
         * 进度指示的方法
         * 运行在主线程中,在这个方法中可以直接更新控件的属性
         */
        protected void onProgressUpdate(Integer... values) {
            int num = values[0];
            test.setText("num:"+num);//更新主线程中UI控件属性
            super.onProgressUpdate(values);
        }

        @Override
        /**
         * 运行在主线程中,当后台运行结束,自动调用该方法
         */
        protected void onPostExecute(Void unused) {
            Toast.makeText(MainActivity.this,"子线程运行结束",Toast.LENGTH_LONG).show();
            super.onPostExecute(unused);
        }
    }
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 12:02:26  更:2021-09-01 12:04:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/25 2:18:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码