这是我的代码
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的手机上不随更改而更新,但在较新的安卓版本上有效。
到目前为止,我已经尝试了以下几种:
imageview.invalidate();
- 使用了可运行的with处理程序
activity.runOnUiThread();
请记住,该代码适用于较新的android版本。它应该适用于所有版本,因为代码遵循Android指南。
有人知道为什么会发生这种事吗?解决方案
MessageQueue是否与此处有关?
问题是向imageview提供新位图。在处理程序的handleMessage()中,我为imageview提供了新的位图,这导致它不会随着更改而刷新。管理员工作得很好。尽管我仍然不明白为什么imageview拒绝在旧的android版本上使用新的位图。
我通过保持相同的位图解决了这个问题。