如果处理程序用于发布消息,则Imageview不会更新



这是我的代码

public void invalidateWidget(boolean invalidateUsingCaches) {
mUpdatingWidget = true;
if (invalidateUsingCaches) {
widget.invalidateUsingCaches();
if (widget.isRefreshRequired()) {
widget.initializeRefreshRequired();
mWidgetUpdateHandler.removeMessages(handlerMessage);
mWidgetUpdateHandler.sendEmptyMessageDelayed(handlerMessage,
handlerDelay);
}
} else {
widget.invalidate(false);
}
refreshImageView();
mUpdatingWidget = false;
}

此行

mWidgetUpdateHandler.sendEmptyMessageDelayed(handlerMessage,
handlerDelay); 

导致imageview在安卓版本2.3的手机上不随更改而更新,但在较新的安卓版本上有效。

到目前为止,我已经尝试了以下几种:

  1. imageview.invalidate();
  2. 使用了可运行的with处理程序
  3. activity.runOnUiThread();

请记住,该代码适用于较新的android版本。它应该适用于所有版本,因为代码遵循Android指南。

有人知道为什么会发生这种事吗?解决方案
MessageQueue是否与此处有关?

问题是向imageview提供新位图。在处理程序的handleMessage()中,我为imageview提供了新的位图,这导致它不会随着更改而刷新。管理员工作得很好。尽管我仍然不明白为什么imageview拒绝在旧的android版本上使用新的位图。

我通过保持相同的位图解决了这个问题。

最新更新