【发布时间】:2014-05-28 11:46:24
【问题描述】:
在Android平台中,一个View对象有一个实例方法postDelayed,根据文档:
使 Runnable 被添加到消息队列中,在之后运行 经过指定的时间量。可运行文件将在 用户界面线程。
我的问题:
- 为什么这个方法必须是 View 的实例方法?
- 如果我在一个视图而不是另一个视图中调用 postDelayed 会有什么不同吗?
谢谢。
【问题讨论】:
-
为什么你认为它不应该是视图的实例方法?实例变量有助于创建可以处理的多个对象,但使用静态你无法实现。想象一下,如果 ImageView 是静态的,那么您的应用程序中不能有多个图像持有者。
-
假设当我从一个视图而不是另一个视图调用 postDelayed 时,它的行为完全相同,那么我认为此方法不属于任何一个特定的视图实例。它应该在某处被分解。而且因为它“导致Runnable被添加到消息队列中”,我认为它确实应该属于这个消息队列实例,比如messageQueue.postDelayed什么的。
-
这种情况下的消息队列将是修改 UI 的队列。暂时看这个developer.android.com/reference/android/os/MessageQueue.html,明天回复你,再见
-
您能否详细说明您的要求,以及“当我从一个视图而不是另一个视图调用它时”是什么意思
-
我同意。把这个放在视图上感觉很奇怪。我希望至少有一个我会调用 postDelayed 的 getHandler() 方法。事实上,这个方法实际上是一个助手(ala findViewById),它只是将调用转发给它的 mAttachInfo 成员。
标签: android