为什么getHandler()返回null?

Bra*_*bra 9 android handler android-mapview

我有以下问题.我在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();
      }
Run Code Online (Sandbox Code Playgroud)

但是当我得到处理程序时它返回null,尽管在调试模式处理程序返回并显示错误消息.问题是什么?

PS可能是获取Handler的错误方法,但我无法找到有关它的信息.

ale*_*leb 25

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

public Handler getHandler() {
    if (mAttachInfo != null) {
        return mAttachInfo.mHandler;
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

mAttachInfo设置dispatchAttachedToWindow并且无效dispatchDetachedFromWindow.

而不是mapView.getHandler().post()你可以直接使用mapView.post()(似乎使用getHandler().post()ViewRootImpl.getRunQueue().post()).