Handler日常使用简介

本文介绍了Android多线程操作中Handler的使用。使用Handler时要注意不阻塞UI线程、不在UI线程外访问UI工具包。阐述了Handler实现机制,包括Message、MessageQueue、Looper和Handler对象。还提到了内存泄漏问题及解决办法,最后给出了使用Handler实现闪屏页的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android在多线程操作使用handler时注意两点:
1、不要阻塞UI线程
2、不要在UI线程之外访问Android UI工具包

 

例子

 private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case 100:
                    textView.setText("下载完成");
                    break;
            }
        }
    };

    public void downloadClick(View v){
        //使用线程模拟下载操作
        new Thread(new Runnable() {
            @Override
            public void run() {
                while(true){
                    try {
                        Thread.sleep(3000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    break;
                }
                //下载完成后,更新UI状态
//                textView.setText("下载完成");
                handler.sendEmptyMessage(100);//发送一个空消息,标记为100

//                Message msg=handler.obtainMessage();//获取一个消息对象
//                msg.what=100;
//                msg.obj="要存储的信息";//任意类型
//                handler.sendMessage(msg);//发送消息
//                handler.sendEmptyMessageAtTime(200,System.currentTimeMillis()+3000);//在指定时间后发送
//                handler.sendEmptyMessageDelayed(300,2000);//延迟多少时间后发送消息

            }
        }).start();
    }

通过Handler调用UI组件

Handler内部实现原理
Handler实现机制:
1、Message对象,表示要传递的一个消息
2、MessageQueue对象,存放消息对象的消息队列,先进先出原则
3、looper对象负责管理当前线程的消息队列(MessageQueue)
4、Handler对象负责把消息push到消息队列中,以及接收looper从消息队列中取出的消息。

Android启动线程时会在UI线程创建一个MessageQueue。

流程图

å¨è¿éæå¥å¾çæè¿°

内存泄漏问题
activity退出了,但handler依旧获取到activity的引用,导致activity没有完全退出,导致内存的泄漏。

1、定义一个内部类时,会默认拥有外部类对象的引用,所以建议使用内部类时,最好定义为一个静态内部类

2、引用的强弱:强引用-》软引用-》弱引用

使用Handler实现闪屏页
闪屏页的作用
1、欢迎界面
2、初始化工作
 

代码块

public class SplashActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                startMainActivity();
            }
        },3000);
    }
    private void startMainActivity(){
        Intent intent=new Intent(this,MainActivity.class);
        startActivity(intent);
    }
    private Handler handler=new Handler();
    }
 

 

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值