我是Android开发的新手。在处理Android的线程时,似乎有两个重要的类: Looper
和 Handler
。分别有静态方法 Looper.myLooper()
和 Looper.getMainLooper()
,用于获取当前线程的 looper 和 UI 线程的 looper。然而,Handler
没有这样的静态方法。例如,如果你想要将数据发送到UI线程,代码示例建议采用以下方式:
new Handler(Looper.getMainLooper()).post(new Runnable() { ...
为什么
Handler
不提供一个缓存的静态方法getMainHandler()
,像这样?这样做不是可以避免创建不必要的垃圾吗?private static final Handler mainHandler = new Handler(Looper.getMainLooper());
public static Handler getMainHandler() { return mainHandler; }
Handler
的主要目的是通过扩展Handler
类(或实现自己的Handler.Callback
)来执行handleMessage
,所以您只能这样做。 - pskinkView
,您可以使用View#post
(当然)。如果您没有View
,那么您可以简单地使用任何单例来保持您的Handler
。 - pskink