Android 新处理程序()和新处理程序(Looper.myLooper()之间的差异
我查阅了官方文档,但似乎找不到Android 新处理程序()和新处理程序(Looper.myLooper()之间的差异,android,android-handler,Android,Android Handler,我查阅了官方文档,但似乎找不到new Handler()和new Handler(Looper.myLooper()) newhandler() 默认构造函数将此处理程序与 当前线程 Looper myLooper() 返回与当前线程关联的活套对象。返回空值 如果调用线程未与循环器关联 从处理程序,如果不提供活套,默认情况下,它将在初始化处理程序的当前活套上操作,即活套.myLooper() 所以 newhandler() 及 基本上是一样的 但是处理程序(Looper-Looper)构造函数可
new Handler()
和new Handler(Looper.myLooper())
newhandler()
默认构造函数将此处理程序与
当前线程
Looper myLooper()
返回与当前线程关联的活套对象。返回空值
如果调用线程未与循环器关联
从
处理程序
,如果不提供活套
,默认情况下,它将在初始化处理程序
的当前活套上操作,即活套.myLooper()
所以
newhandler()
及
基本上是一样的
但是处理程序(Looper-Looper)
构造函数可以在需要更改线程而不是创建句柄对象的线程的情况下使用
例如,如果您在后台线程中,并且希望在主线程上运行某些内容,那么您将无法简单地使用new Handler()
,因为该处理程序将在同一线程中运行
在这里,您可以将构造函数与Looper参数一起使用,如下所示:
新处理程序(context.getMainLooper())
或
Handler(Looper.getMainLooper())//如果没有上下文
Handler()
现在不推荐使用此构造函数
因此,我们需要使用:
Handler(Handler.Callback callback) OR
Handler(Looper looper) OR
Handler(Looper looper, Handler.Callback callback)
为了在android中创建Handler的实例
有关详细信息,请查看此链接:
我不太清楚为什么-ve会投票。我也有同样的观点,他们是一样的。有什么不同的情况吗?是的,例如,当你在后台线程上运行&想在主/ui线程上运行一些东西时,你可以在
Handler
构造函数中传递Looper.getMainLooper()
在主线程上执行它。@d3xter,我也编辑了我的答案,希望现在已经很清楚,问题根本不是关于getMainLooper()
;这是关于默认的newhandler()
和newhandler(Looper.myLooper)
其中有什么不清楚的?你说的话,都是100%平等的。Handler(Looper-Looper)
构造函数用于在其他线程(而不是Looper.myLooper()返回的线程)中操作处理程序
Handler(Handler.Callback callback) OR
Handler(Looper looper) OR
Handler(Looper looper, Handler.Callback callback)