私は時々次のシナリオに遭遇します:
- View.post(Runnable r)を呼び出すと、trueが返されます
- android.os.Looper.myLooper()。dump(...)を呼び出すと、ランナブルがmessageQueueにないようです
- メインレイアウトでinvalidateを呼び出した後(たとえば20秒後)、Runnableが実行されます
これは時々発生するだけで、複数のデバイスと複数のAndroidバージョンで発生します。
問題は、Runnableが正常に投稿されたが、実行されず、Android:ListView内のボタンがonClickイベントを受信しないのと同様のようです。
Runnableが投稿されたが、(まだ)実行されていない状況を誰かが説明できますか?そして、なぜそれが(親)無効化の後に実行されるのか。
注:runOnUiThreadを使用してRunnableを投稿することは正常に機能しますが、これを使用することはできません。私の本当の問題は、OnClickListenerが呼び出されないことがあることです。これは、View.onTouchEventでのpost(performClick)の呼び出しまで追跡されました。
ビュー階層が奇妙な状態にあると思いますが、私にはわかりません。
マイビューはコードで作成され、大まかに次の要素で構成されます
- RelativeLayout
- リストビュー
- ホリゾンタルリストビュー(http://www.dev-smart.com/archives/34から)
- MyOwnView