gpt4 book ai didi

here-api - 为什么在后台线程调用 OnGestureListenerAdapter 的 onTapEvent 方法?

转载 作者:行者123 更新时间:2023-12-03 21:50:14 24 4
gpt4 key购买 nike

我们正在使用高级 SDK,并且在后台线程上调用 OnGestureListenerAdapter 接口(interface)的 OnTapEvent 回调。它是 SDK 中的预期行为还是错误?

试图在文档中找到答案,但没有关于这种行为的信息。

val state = MutableLiveData<MapViewState>()

override fun onTapEvent(point: PointF): Boolean {
viewModel.onMapClick()
return false
}

fun onMapClick() {
state.setValue(state.copy(selected = None))
}

尝试直接从 onTapEvent 为 LiveData 设置值时出错。
    java.lang.IllegalStateException: Cannot invoke setValue on a background thread
at androidx.lifecycle.LiveData.assertMainThread(LiveData.java:443)
at androidx.lifecycle.LiveData.setValue(LiveData.java:286)
at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java:33)
at com.example.MapFragment.onTapEvent(MapFragment.kt:121)
at com.nokia.maps.MapGestureHandlerBase.a(MapGestureHandlerBase.java:253)
at com.nokia.maps.MapGestureHandlerBase.a(MapGestureHandlerBase.java:230)
at com.nokia.maps.NmaaGestureHandler.handleTap(NmaaGestureHandler.java:230)
at com.nokia.maps.NmaaGestureHandler.pollNative(Native Method)
at com.nokia.maps.NmaaGestureHandler.a(NmaaGestureHandler.java:26)
at com.nokia.maps.NmaaGestureHandler$a.d(NmaaGestureHandler.java:379)
at com.nokia.maps.NmaaGestureHandler$a.c(NmaaGestureHandler.java:371)
at com.nokia.maps.NmaaGestureHandler$a.a(NmaaGestureHandler.java:363)
at com.nokia.maps.NmaaGestureHandler$a$1.a(NmaaGestureHandler.java:390)
at com.nokia.maps.NmaaGestureHandler$b.run(NmaaGestureHandler.java:429)

似乎在主线程上调用此回调的逻辑。

最佳答案

快速回答是:避免 ANR。 SDK 用户可以编写繁重的代码,这将导致应用程序无响应问题。
有两种方法可以解决这个问题:

1) 将您的操作发布到 UI 线程,如下所示:

                    new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// customer code
}
});

2) 使用异步监听器,在 UI 线程上调用。您必须使用“false”值作为第三个参数注册您的手势监听器:
m_mapGesture.addOnGestureListener(gestureListener, 0, false);

希望这可以帮助!

关于here-api - 为什么在后台线程调用 OnGestureListenerAdapter 的 onTapEvent 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56595879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com