1

私は時々次のシナリオに遭遇します:

  • 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)の呼び出しまで追跡されました。

ビュー階層が奇妙な状態にあると思いますが、私にはわかりません。
マイビューはコードで作成され、大まかに次の要素で構成されます

4

1 に答える 1

0

答えはここにありますListView.hasWindowFocus==trueですが、子ビューhasWindowFocus == false

ListViewは、ビューのアダプターが好きではありません。

于 2012-09-28T09:44:53.777 に答える