我遇到了以下问题。我在像这样的单独线程中的 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;
}
mAttachInfo
在 dispatchAttachedToWindow
中设置,在 dispatchDetachedFromWindow
中设置为空。
您可以直接使用 mapView.post()
而不是 mapView.getHandler().post()
(这似乎使用 getHandler().post()
或 ViewRootImpl.getRunQueue().post()
).
关于android - 为什么 getHandler() 返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13254819/