当前位置:  开发笔记 > Android > 正文

Android - myLooper()vs getMainLooper()

如何解决《Android-myLooper()vsgetMainLooper()》经验,为你挑选了1个好方法。

只是澄清但是在MAIN Thread上的Android活动中,如果我调用Looper.myLooper()vs Looper.getMainLooper()返回相同的引用,对吧?他们是一样的东西 ?我知道我永远不必调用这些通常因为android负责这个,但我想知道它们从主线程调用时有何不同?

如果从主线程我打电话

Looper.myLooper().quit();
// or
Looper.getMainLooper().quit();

它们都提供相同的运行时异常,所以我假设它们是相同的引用:

Looper.myLooper().quit();
// or
Looper.getMainLooper().quit();

谁能确认一下?



1> marcinj..:

你在文档中描述了它:

getMainLooper()

返回应用程序的主循环器,它位于应用程序的主线程中.

myLooper()

返回与当前线程关联的Looper对象.如果调用线程未与Looper关联,则返回null.

至于getMainLooper()是否有用,我可以向你保证.如果您在后台线程上执行某些代码并希望在UI线程上执行代码,例如更新UI,请使用以下代码:

new Handler(Looper.getMainLooper()).post(new Runnable() {
  // execute code that must be run on UI thread
});

当然,还有其他方法可以实现这一目标.

另一个用途是,如果你想检查当前执行的代码是否在UI线程上运行,例如你想抛出/断言:

boolean isUiThread = Looper.getMainLooper().getThread() == Thread.currentThread();

要么

boolean isUiThread = Looper.getMainLooper().isCurrentThread();

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有