我的解法
- 获取主线程的Lopper
- 获取当前线程的Lopper
- 比较这两个线程Looper 是否相等?
获取Looper 并比较
private void testLoop() {
Looper mainLooper = Looper.getMainLooper();
Looper queue = Looper.myLooper();
System.out.println(" is Main Thread :" + (mainLooper == queue));
}
开辟子线程
class TestLoopThread implements Runnable {
@Override
public void run() {
testLoop();
}
}
在Activity中调用的onCeate() 使用
testLoop();
new Thread(new TestLoopThread()).start();
运行结果
- 看图
备注: 也可以获取线程名称来做比较;
- 看图
- 那个主线程,那个是子线程,一目了然....
android 自己的实现
- 在类 DefaultTaskExecutor中有个函数,我们可以拿来直接用
@Override
public boolean isMainThread() {
return Looper.getMainLooper().getThread() == Thread.currentThread();
}