0

这是我的代码

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 不会随着 android 版本 2.3 手机上的更改而更新,但适用于较新的 android 版本。

到目前为止,我已经尝试了以下方法:

  1. imageview.invalidate();
  2. 使用带有处理程序的可运行文件。
  3. activity.runOnUiThread();

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

有人知道为什么会发生这种情况吗?解决方案?
MessageQueue在这里有事吗?

4

1 回答 1

0

问题在于向 imageview 提供新的位图。在处理程序的 handleMessage() 中,我为 imageview 提供了新的位图,这导致它不会随着更改而刷新。处理程序工作正常。虽然我仍然不明白为什么 imageview 拒绝旧 android 版本上的新位图。

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

于 2012-12-17T17:36:51.430 回答