Android判断当前是否在主线程

本文介绍在Android开发中判断当前线程是主线程还是子线程的方法,通过使用Looper来确定线程类型,从而正确调用View的重绘方法。避免在子线程中直接调用invalidate()导致的UI更新异常。

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

Android开发中,有时需要判断当前线程到底是主线程,还是子线程。

例如:我们在自定义View时,想要让View重绘,需要先判断当前线程到底是不是主线程,然后根据判断结果来决定到底是调用 invalidate() 还是 postInvalidate() 方法. 如果当前是主线程,就调用 invalidate()方法;而如果当前是子线程,就调用 postInvalidate() 方法,注意:子线程中不能调用 invalidate() 方法,否则就会报异常,提示我们不能在子线程中更新UI。

那么,我们如何判断当前线程到底是主线程, 还是子线程呢?答案是:可以借助于 Looper. 代码如下:

public boolean isMainThread() {
    return Looper.getMainLooper() == Looper.myLooper();
}

或者

public boolean isMainThread() {
    return Looper.getMainLooper().getThread() == Thread.currentThread();
}

或者

public boolean isMainThread() {
    return Looper.getMainLooper().getThread().getId() == Thread.currentThread().getId();
}

转自:https://www.cnblogs.com/genggeng/p/7524948.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值