新Handler()和新Handler(Looper.myLooper())之间的区别

时间:2018-04-07 05:47:47

标签: android android-handler

我浏览了官方文档,但我似乎无法找到new Handler()new Handler(Looper.myLooper())

之间是否存在任何差异

new Handler()

  

默认构造函数将此处理程序与Looper相关联   当前主题。

Looper myLooper ()

  

返回与当前线程关联的Looper对象。返回null   如果调用线程没有与Looper相关联。

2 个答案:

答案 0 :(得分:0)

Handler Source code开始,如果您未提供looper,则默认情况下会对初始化Handler的当前活套进行操作,即Looper.myLooper()

所以

new Handler()

new Handler(Looper.myLooper())

基本相同。

Handler(Looper looper)构造函数可用于您想要更改除创建句柄对象的线程之外的线程的情况。

例如,如果你在后台线程并想在主线程上运行某些东西,那么你将无法用new Handler()完成它,因为该处理程序将在同一个线程中运行。

在这里你可以使用带有Looper参数的构造函数,如:

new Handler(context.getMainLooper())

Handler(Looper.getMainLooper()) //if you don't have context

答案 1 :(得分:0)

Handler() 此构造函数现已弃用。

因此,我们需要使用:

  Handler(Handler.Callback callback)   OR

  Handler(Looper looper)               OR

  Handler(Looper looper, Handler.Callback callback)

为了在android中创建Handler的实例。

有关详细信息,您可以查看此链接: https://developer.android.com/reference/android/os/Handler