android - 为什么 getHandler() 返回 null?

标签 android android-mapview handler

我遇到了以下问题。我在像这样的单独线程中的 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.post() 而不是 mapView.getHandler().post()(这似乎使用 getHandler().post()ViewRootImpl.getRunQueue().post()).

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

相关文章:

android - Sencha Touch 打包到 Android 报错

android - Firebase-perf 与 let 插件冲突

java - map View 显示黑色区域

android - 在 Android 中将形状放入 MapView

qt - 如何重写父类(super class)组件的信号处理程序

android - 处理程序 postDelayed 按配置延迟更长的时间

java - 从 Android 中的 AlertDialog 选择/拍照

android - Android 上 App 之间的切换会发生什么?

c# - Android Java 到 Mono C# - MapView.LayoutParams

ruby-on-rails-4 - 如何在delayed_job rails中获取处理程序的参数列表