Android 成功发布的Runnable仅在父级无效时执行

Android 成功发布的Runnable仅在父级无效时执行,android,android-listview,message-queue,runnable,Android,Android Listview,Message Queue,Runnable,我有时会遇到以下情况: 我调用View.postRunnable r,它返回true 调用android.os.Looper.myLooper.dump…,runnable似乎不在消息队列中 在主布局上调用invalidate(例如20秒后)后,将执行Runnable 这种情况只会时不时发生,在多台设备和多个Android版本上都会发生 问题似乎类似于和 有人能解释一下,在什么情况下,Runnable被发布,但还没有被执行吗?以及为什么它会在父级失效后执行 注意:使用runOnUiThread发

我有时会遇到以下情况:

我调用View.postRunnable r,它返回true 调用android.os.Looper.myLooper.dump…,runnable似乎不在消息队列中 在主布局上调用invalidate(例如20秒后)后,将执行Runnable 这种情况只会时不时发生,在多台设备和多个Android版本上都会发生

问题似乎类似于和

有人能解释一下,在什么情况下,Runnable被发布,但还没有被执行吗?以及为什么它会在父级失效后执行

注意:使用runOnUiThread发布Runnable很好,但我不能使用它:我真正的问题是有时候OnClickListener没有被调用;这可以追溯到调用postperformClick in View.onTouchEvent

我假设我的视图层次结构处于某种奇怪的状态,但我一无所知。 我的视图是用代码创建的,大致包括

相对布局 列表视图 水平视图 MyOwnView 答案就在这里


ListView不喜欢视图适配器。

我注意到,当post没有立即执行时,view.hasWindowFocus==false。这有助于回答我的问题吗?