【发布时间】:2012-12-20 14:46:19
【问题描述】:
谁能告诉我使用runOnUiThread() 和Looper.getMainLooper().post() 在Android 的UI 线程上执行任务有什么区别吗??
我唯一能确定的是,由于runOnUiThread是一个非静态的Activity方法,Looper.getMainLooper().post()在你需要在一个看不到Activity的类中写一些东西(比如接口)时更方便。
我不是在寻找关于是否应该在 UI 线程上执行某些事情的讨论,我知道有些事情不能,很多事情不应该,但是,有些事情(比如启动 AsyncTask)必须从 UI 线程执行。
【问题讨论】:
-
除了
runOnUiThread会检查它是否已经是UI线程并直接执行你的任务而不是将其发布为Message之外没有区别 -
谢谢。能否请您将其转换为答案,以便我接受?
-
另外,我已经编写了一些代码来检查 UI 线程上是否正在执行某些内容,因此手动包含非常简单。
标签: android