我有以下问题。我在像这样的单独线程中在mapview上绘制路线:

 public void drawRoute(final MapView mapView) {
          new Thread(new Runnable() {
          public void run() {
          try {
           //Do something useful
          } catch (SomeException se) {
           Handler handler = mapView.getHandler();
           handler.post(/*show error in UI thread*/)
          }}
        }).start();
      }

但是,当我获取处理程序时,它返回null,尽管在 Debug模式下返回了处理程序并显示了错误消息。可能是什么问题?

PS可能是获取Handler的方法不正确,但我找不到有关它的信息。

最佳答案

getHandler方法返回null,因为未附加 View :

public Handler getHandler() {
    if (mAttachInfo != null) {
        return mAttachInfo.mHandler;
    }
    return null;
}
mAttachInfodispatchAttachedToWindow中设置,并在dispatchDetachedFromWindow中为空。

除了mapView.getHandler().post()外,您还可以直接使用 mapView.post() (似乎使用getHandler().post()ViewRootImpl.getRunQueue().post())。

关于android - 为什么getHandler()返回null?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13254819/

10-10 18:39