我有时会遇到以下情况:
- 我调用 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) 的调用。
我假设我的视图层次结构处于某种奇怪的状态,但我一无所知。
我的视图是在代码中创建的,大致包括
- 相对布局
- 列表显示
- HorizontalListView(来自http://www.dev-smart.com/archives/34)
- 我的视图