我正在编写一个库,它执行一些密集的网络工作。所以,我使用 HandlerThread 来执行这个操作,如下所示:
Looper.prepare();
libraryThread = new LibraryHandlerThread(context);
libraryThread.start();
libraryThread.getLooper();
LibraryHandlerThread 执行网络操作和其他耗时的操作。
当我从工作线程(主线程以外的任何线程)调用此代码时,它工作正常。但是抱怨“当一个已经处于活动状态的循环器时无法初始化另一个循环器”。我相信 Looper 默认在主线程上运行,并抱怨 Looper.prepare()。我可以执行以下操作以使其从主线程工作:
Looper.getMainLooper().quit();
Looper.prepare();
libraryThread = new LibraryHandlerThread(context);
libraryThread.start();
libraryThread.getLooper();
我的问题是:对主线程有什么影响。在我的理想世界中,我想在不影响主线程的情况下在单独的线程上运行我的库操作。我怎样才能在没有太多破坏的情况下实现这一目标?