[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があればそれをそのまま使えばいいんじゃないですか?という考えが生まれた.
     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."
  • アンドロイドシステムでは、メインスレッドのみがUIを操作しますか?変形可能です.
    すなわち,目に見える画面の変化はメインスレッドのみである.Subsredとは言えません
  • 結局はそのためだ.
    いずれにしてもrunOnUIThreadについて理解しました.