[Android Studio]runOnUiThread
2157 ワード
https://recipes4dev.tistory.com/172
上のブログを整理してアップロードしました.
でもよくわからないので脳を整理してみましょう
"Only the original thread that created a view hierarchy can touch its views."アンドロイドシステムでは、メインスレッドのみがUIを操作しますか?変形可能です.
すなわち,目に見える画面の変化はメインスレッドのみである.Subsredとは言えません これは多くの動作を生み出し、
handler,message,runOnUiThread.
あるプロセスがメインスレッドであるvoid main()またはandroidのメインアクティビティのメインプロセスで実行される場合、別のタスクを同時に実行します.このような状況が発生する
たとえば、モグラを捕まえるゲームでは、モグラごとに異なるリズムで現れ、4匹のモグラがあれば、モグラごとに1つのプロセス(合計4つのプロセス)でランダムに現れます.
message
これらのプロセスとプロセスの間でデータを転送する必要がある場合は、メッセージが使用されます.
モグラが飛び出してその部分にぶつかり、モグラが捕まえられ、点数が上がると、
モグラが捕まえられると,画像を反応させる必要もあり,この点数を高める関数も必要である.
しかし、ここで撮られた場合、反応画像はモグラが痛みで涙を流す画像に変えるべきだったが、アンドロイドシステムでは肉眼で見える画面(UI)部分であり、メインスレッドでしか動作しなかった.
そうであれば、モグラをキャプチャする際に、特定のデータをプロセスからプライマリスレッドに移行することができる.
メインスレッドでは、データを受信して画像を置き換えるか、関数を使用して解決します.
この過程で,データ伝達の役割はmessageによって達成される.
ではメインスレッドの角度から見ると4匹のモグラがいますが、捕まえられたモグラは一度だけではありません.データがキャプチャされ、キャプチャされ、キャプチャされず、飛び出し、中にはなど様々な状態があり、4匹ごとに、同時に特定の時計単位でメインスレッドにデータを送信し、モグラのイメージが上から下へ、泣いたり、隠れたりします.
これらのデータはQueueで蓄積されていますか?firstin,firstout方式で動作する.
では、これらのデータは誰が「操作」したのでしょうか.
データは何によって送信されますか?どのように使用しますか?
送信の立場ではhandler.メッセージをsendMessage()ハンドルに送信します.
受け取った立場でもhandleMessage()を使います.
handlerを使用してintentのように、データ名とargをロードしてデータを送信および受信し、データを剥がしますか?使用します.
では、今日のテーマrunOnUIThreadを見てみましょう.
アクティブなデバイスからメッセージを送信するたびに、プロセッサを宣言して送信する必要がありますか?
activityに既に宣言されているhandlerがあればそれをそのまま使えばいいんじゃないですか?という考えが生まれた.
今のねじがUIねじじゃないと回ります
UIスレッド(プライマリ・スレッド上で実行する必要があるスレッド)の場合は、プライマリ・スレッドに送信します.
これは全部です.
"Only the original thread that created a view hierarchy can touch its views."アンドロイドシステムでは、メインスレッドのみがUIを操作しますか?変形可能です.
すなわち,目に見える画面の変化はメインスレッドのみである.Subsredとは言えません 結局はそのためだ.
いずれにしてもrunOnUIThreadについて理解しました.
上のブログを整理してアップロードしました.
でもよくわからないので脳を整理してみましょう
"Only the original thread that created a view hierarchy can touch its views."
すなわち,目に見える画面の変化はメインスレッドのみである.Subsredとは言えません
handler,message,runOnUiThread.
あるプロセスがメインスレッドであるvoid main()またはandroidのメインアクティビティのメインプロセスで実行される場合、別のタスクを同時に実行します.このような状況が発生する
たとえば、モグラを捕まえるゲームでは、モグラごとに異なるリズムで現れ、4匹のモグラがあれば、モグラごとに1つのプロセス(合計4つのプロセス)でランダムに現れます.
message
これらのプロセスとプロセスの間でデータを転送する必要がある場合は、メッセージが使用されます.
モグラが飛び出してその部分にぶつかり、モグラが捕まえられ、点数が上がると、
モグラが捕まえられると,画像を反応させる必要もあり,この点数を高める関数も必要である.
しかし、ここで撮られた場合、反応画像はモグラが痛みで涙を流す画像に変えるべきだったが、アンドロイドシステムでは肉眼で見える画面(UI)部分であり、メインスレッドでしか動作しなかった.
そうであれば、モグラをキャプチャする際に、特定のデータをプロセスからプライマリスレッドに移行することができる.
メインスレッドでは、データを受信して画像を置き換えるか、関数を使用して解決します.
この過程で,データ伝達の役割はmessageによって達成される.
ではメインスレッドの角度から見ると4匹のモグラがいますが、捕まえられたモグラは一度だけではありません.データがキャプチャされ、キャプチャされ、キャプチャされず、飛び出し、中にはなど様々な状態があり、4匹ごとに、同時に特定の時計単位でメインスレッドにデータを送信し、モグラのイメージが上から下へ、泣いたり、隠れたりします.
これらのデータはQueueで蓄積されていますか?firstin,firstout方式で動作する.
では、これらのデータは誰が「操作」したのでしょうか.
データは何によって送信されますか?どのように使用しますか?
送信の立場ではhandler.メッセージをsendMessage()ハンドルに送信します.
受け取った立場でもhandleMessage()を使います.
handlerを使用してintentのように、データ名とargをロードしてデータを送信および受信し、データを剥がしますか?使用します.
では、今日のテーマrunOnUIThreadを見てみましょう.
アクティブなデバイスからメッセージを送信するたびに、プロセッサを宣言して送信する必要がありますか?
activityに既に宣言されているhandlerがあればそれをそのまま使えばいいんじゃないですか?という考えが生まれた.
public final void runOnUiThread(Runnable action) {
if (Thread.currentThread() != mUiThread) {
mHandler.post(action);
} else {
action.run();
}
}
こんなのも今のねじがUIねじじゃないと回ります
UIスレッド(プライマリ・スレッド上で実行する必要があるスレッド)の場合は、プライマリ・スレッドに送信します.
これは全部です.
"Only the original thread that created a view hierarchy can touch its views."
すなわち,目に見える画面の変化はメインスレッドのみである.Subsredとは言えません
いずれにしてもrunOnUIThreadについて理解しました.
Reference
この問題について([Android Studio]runOnUiThread), 我々は、より多くの情報をここで見つけました https://velog.io/@jsw4215/Android-StudiorunOnUiThreadテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol