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