gpt4 book ai didi

java - 使用 LocationListener 的 BlackBerry 应用程序在 OS 6 上卡住

转载 作者:太空宇宙 更新时间:2023-11-04 08:40:05 24 4
gpt4 key购买 nike

我有一个 Java 应用程序,它使用 LocationProvider API 在应用程序启动时注册 LocationListener 并在关闭应用程序时取消注册。将应用程序置于后台并将其返回前台时也会这样做。

这在大多数情况下工作得很好,但我最近在不同的设备上遇到了应用程序卡住/挂起的情况(例如,我可以在我的 BlackBerry Torch OS 6 上重现它,似乎这种情况在 OS 6 设备上更常见)。

打开应用程序,关闭它重新打开它,当我尝试再次关闭它时,它卡住。我无法再关闭它了。我必须使用“切换应用程序”功能转到另一个应用程序(通过按住菜单按钮或按绿色或红色按钮)。

之后,我收到一条错误消息,指出应用程序没有响应并已关闭。

代码如下所示:

public void activate() {
if (ApplicationPermissionsManager.getInstance().getPermission(14) == ApplicationPermissions.VALUE_ALLOW) {
startLocationProvider();
}
}

public void deactivate() {
if (ApplicationPermissionsManager.getInstance().getPermission(14) == ApplicationPermissions.VALUE_ALLOW) {
stopLocationProvider();
}
}

public boolean onClose() {
stopLocationProvider();
System.exit(0);
return true;
}

public void startLocationProvider() {
try {
locationProvider = LocationProvider.getInstance(new BlackBerryCriteria(GPSInfo.GPS_MODE_ASSIST));
if (locationProvider != null) {
locationProvider.setLocationListener(new LocationListenerImpl(), 10, 9, -1);
}
} catch (Exception le) {
// log it
}
}

public void stopLocationProvider() {
if (locationProvider != null) {
try {
locationProvider.setLocationListener(null, -1, -1, -1);
locationProvider = null;
} catch (Exception se) {
// log it
}
}
}

最佳答案

在事件线程上调用位置监听器(您不为其提供代码)。如果在事件线程上调用的方法阻塞时间过长,则会导致您遇到挂起。操作系统最终将终止此类未能响应的应用程序。您需要查找可能需要很长时间才能执行的 LocationListenerImpl 片段,或者发布该代码以便我们查看。

关于java - 使用 LocationListener 的 BlackBerry 应用程序在 OS 6 上卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5512430/

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