私は集中的なネットワーク作業を行うライブラリを書いています。したがって、この操作を次のように実行するために HandlerThread を使用しています。
Looper.prepare();
libraryThread = new LibraryHandlerThread(context);
libraryThread.start();
libraryThread.getLooper();
LibraryHandlerThread は、ネットワーク操作とその他の時間のかかる操作を行います。
このコードをワーカー スレッド (メイン スレッド以外のスレッド) から呼び出すと、正常に動作します。しかし、「ルーパーが既にアクティブな場合、別のルーパーを初期化できない」という不満があります。ルーパーはデフォルトでメインスレッドで実行され、Looper.prepare() について不平を言うと思います。次のようなことを実行して、メイン スレッドから動作させることができます。
Looper.getMainLooper().quit();
Looper.prepare();
libraryThread = new LibraryHandlerThread(context);
libraryThread.start();
libraryThread.getLooper();
私の質問は、メイン スレッドへの影響はどうなるかということです。私の理想的な世界では、メイン スレッドに影響を与えることなく、ライブラリの操作を別のスレッドで実行したいと考えています。あまり破壊せずにこれを達成するにはどうすればよいですか?