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

时间:2012-12-10 15:47:32

标签: android 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不能更新Android版2.3手机上的更改,但适用于较新的Android版本。

到目前为止,我已尝试过以下内容:

  1. imageview.invalidate();
  2. 使用了带有处理程序的runnable。
  3. activity.runOnUiThread();
  4. 请记住,代码适用于较新的Android版本。它应该适用于所有版本,因为代码遵循Android准则。

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

1 个答案:

答案 0 :(得分:0)

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

我通过保持相同的位图来解决问题。