1

我有时会遇到以下情况:

  • 我调用 View.post(Runnable r) 它返回 true
  • 调用 android.os.Looper.myLooper().dump(...) 时,runnable 似乎不在 messageQueue 中
  • 在主布局上调用 invalidate 后(例如 20 秒后),Runnable 被执行

这只会不时发生,它会发生在多个设备和多个 Android 版本上。

问题似乎类似于Runnable is posted failed but not run and Android: Button within ListView not received onClick events

有人可以解释在什么情况下 Runnable 被发布但没有被执行(还)?以及为什么它确实在(父)无效后被执行。

注意:使用 runOnUiThread 发布 Runnable 工作正常,但我不能使用它:我真正的问题是有时 OnClickListener 没有被调用;这可以追溯到 View.onTouchEvent 中对 post(performClick) 的调用。

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

4

1 回答 1

0

答案在这里给出ListView.hasWindowFocus==true 但子视图 hasWindowFocus==false

ListView 不喜欢视图的适配器。

于 2012-09-28T09:44:53.777 回答