[解決済み】メインスレッドで他のスレッドからコードを実行する
2022-03-25 01:41:13
質問
アンドロイドのサービスにおいて、私はいくつかのバックグラウンドタスクを行うためにスレッドを作成しました。
あるスレッドが、メインスレッドのメッセージキューにあるタスクをポストする必要がある状況があります。
Runnable
.
を取得する方法はありますか?
Handler
をメインスレッドに投稿し
Message
/
Runnable
を、私の他のスレッドからコピーしますか?
解決方法は?
注:この回答は非常に多くの注目を集めたので、更新する必要があります。オリジナルの回答が投稿されて以来、@dzeikeiからのコメントはオリジナルの回答とほぼ同じ注目を集めました。そこで、2つの可能な解決策を紹介します。
1. 背景スレッドが
Context
オブジェクトを作成します。
バックグラウンドワーカーのスレッドが 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);
2. バックグラウンドスレッドに
Context
オブジェクト
(@dzeikei によって提案されました)。
// 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);
関連
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み] 他のスレッドからGUIを更新するにはどうすればよいですか?
-
[解決済み] 環境変数JAVA_OPTSの使い方を教えてください。
-
[解決済み] javax.mail.MessagingException: SMTPホストに接続できませんでしたか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Javaにおける "implements Runnable "と "extends Thread "の違いについて
-
[解決済み] プロセスとスレッドの違いは何ですか?
-
[解決済み] Bitmapオブジェクトに画像を読み込む際にOutOfMemoryが発生する問題
-
[解決済み] グリッドレイアウトにおけるフリングジェスチャーの検出
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] トークンのシンタックスエラー、これらのトークンを削除してください [closed].
-
[解決済み] Eclipse デフォルトのフォント名
-
[解決済み] この配列の中の数字を入れ替えるには、何が足りないのでしょうか?ジャバ
-
[解決済み] Application startメソッドで例外が発生する。JavaFx 11
-
[解決済み] 警告: コンテキスト初期化中に例外が発生 - 更新の試みはキャンセルされました。
-
[解決済み] プロトコルハンドラの初期化に失敗しました。
-
[解決済み] Mavenです。JARは空になります - 含有するためにマークされたコンテンツがありません
-
[解決済み] java.lang.ClassCastException: java.lang.Long を java.lang.Integer にキャストできない(java 1.6
-
[解決済み] JavaFX 同じパッケージ内なのに「場所が必要です。
-
[解決済み] Javaでdoubleをfloatに変換する