Android view.post()メソッドの使い方

999 ワード

現在のviewがattachedToWindowの後に操作を実行する必要がある場合、viewのpostメソッドを使用します.方法は次のとおりです.
view.post(new Runnable() {
            @Override
            public void run() {
                
            }
});

 
そのrunメソッド呼び出しタイミング:postメソッドは自動的に2つの状況処理に分けられ、ViewがまだattachedToWindowを持っていない場合は、これらのRunnable操作をキャッシュし、attachedToWindowを待ってからメインスレッドで実行する、そうでない場合はmAttachInfoを直接通過する.mHandlerはこれらのRunnable操作をメインスレッドのMessageQueueにpostして実行を待つ.
例えば栗:通常のpopupwindowはactivityのonCreateメソッドでは実行できません.添付のviewがWindowにバインドされている場合(attachedToWindow)に表示されます.そうしないと、次のように表示されます.android.view.WindowManager$BadTokenException: Unable to add window --token null is not valid; is your activity running?
だからそのpostメソッドを使うと、全く問題ありません
View view = find(android.R.id.content);
view.post(new Runnable() {
            @Override
            public void run() {
                //  pop
                pop.showAtLocation(view, Gravity.CENTER,0,0);
            }
});

他にもpostDelayedも同じです