Android サービスでは、バックグラウンド タスクのスレッドを作成するときに、特定のタスクを投稿する必要がある場合があります。 Runnables と同様に、メインスレッドのメッセージキュー上で別のスレッドから送信されます。
これを実現するために、Android は 2 つの機能を提供します。解決策:
バックグラウンド スレッドに Context オブジェクトへの参照がある場合、次のようにメイン スレッドのハンドラーにアクセスできます。
// Get a handler that can be used to post to the main thread Handler mainHandler = new Handler(context.getMainLooper()); Runnable myRunnable = new Runnable() { @Override public void run() {....} // This is your code }; mainHandler.post(myRunnable);
バックグラウンド スレッドに Context オブジェクトがない場合は、メイン スレッドに直接アクセスできます。スレッドの Looper を呼び出してハンドラーを作成します:
// Get a handler that can be used to post to the main thread Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = new Runnable() { @Override public void run() {....} // This is your code }; mainHandler.post(myRunnable);
これらのアプローチのいずれかを使用すると、メイン スレッドのメッセージ キューにタスクをポストし、メイン スレッドで実行されるようにすることができ、UI コンポーネントを更新したり、アプリケーションのメインリソースへのアクセスを必要とするその他の操作。
以上が別のスレッドから Android メインスレッドにタスクを投稿するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。