gpt4 book ai didi

java - Android 主线程 Looper 关注点

转载 作者:行者123 更新时间:2023-12-01 04:22:53 28 4
gpt4 key购买 nike

我正在编写一个库,它执行一些密集的网络工作。因此,我使用 HandlerThread 来执行此操作,如下所示:

Looper.prepare();
libraryThread = new LibraryHandlerThread(context);
libraryThread.start();
libraryThread.getLooper();

LibraryHandlerThread 执行网络操作和其他耗时的操作。

当我从工作线程(主线程以外的任何线程)调用此代码时,它工作正常。但提示“当一个循环器已经处于 Activity 状态时无法初始化另一个循环器”。我相信 Looper 默认在主线程上运行,并提示 Looper.prepare() 。我可以执行以下操作以使其在主线程中工作:

Looper.getMainLooper().quit();
Looper.prepare();
libraryThread = new LibraryHandlerThread(context);
libraryThread.start();
libraryThread.getLooper();

我的问题是:对主线程有什么影响。在我的理想世界中,我希望在单独的线程上运行库的操作而不影响主线程。我怎样才能在不造成太多破坏的情况下实现这一目标?

最佳答案

尝试下面的代码:

private static final HandlerThread sWorkerThread = new HandlerThread("network-operations");
static {
sWorkerThread.start();
}
private static final Handler sWorker = new Handler(sWorkerThread.getLooper());

关于java - Android 主线程 Looper 关注点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18770202/

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