gpt4 book ai didi

java - 为什么为一个目的创建 HandlerThread : to pass it's Looper to a new Handler

转载 作者:行者123 更新时间:2023-12-03 13:10:22 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Best use of HandlerThread over other similar classes

(2 个回答)


6年前关闭。




如果我们看到下一件事,我在代码中看到了很多示例:

HandlerThread thread = new HandlerThread("Thread1");
thread.start();
mLoadHandler = new Handler(thread.getLooper())


mLoadHandler.post(new Runnable() {
public void run() {
// run some code
//methodA();
}
});

您还可以在以下位置找到它:

https://github.com/android/platform_packages_apps_browser/blob/master/src/com/android/browser/OpenDownloadReceiver.java

https://github.com/CyanogenMod/android_packages_apps_Gallery3D/blob/8621799408a58f6b9da3492382ce929b3c93c7de/src/com/cooliris/picasa/PicasaService.java

他们为什么创建 HandlerThread仅出于一个目的:通过 Looper到一个新的 Handler .为什么不直接扩展 HandlerThread并在那里执行所有代码( methodA() )?或者创建一个 Handler 实例并在那里调用:
 Looper.prepare();
Looper.loop();

最佳答案

如果要获取与您创建的 ThreadHandler 类关联的 Handler,则必须传递与该 ThreadHadler 关联的 Looper,否则 Handler 将与实例化它的当前线程关联。
创建这样一个 HandlerThread 的目的一般是当你想多次执行同一种类型的工作时,你可以简单地使用这个 Handler 对象向新线程发布消息。

我认为您的问题是为什么要创建一个内部类而不是实现一个单独的独立类。
如果您正在创建一个内部类,那么您可以直接访问包含类的成员。如果您实现一个单独的类,则需要将所需的变量/ View 值传递给新类。

关于java - 为什么为一个目的创建 HandlerThread : to pass it's Looper to a new Handler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35519120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com