Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GPS管理器上的weired android错误_Android - Fatal编程技术网

GPS管理器上的weired android错误

GPS管理器上的weired android错误,android,Android,在过去的几天里,我一直在努力找出这个问题,但运气不太好。基本上,我的gps侦听器是这样注册的,用于获取gps事件: private void registerForNotifications(int gpsActivationIntervalMillis) { // gps satellite based gpsLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, gpsActivatio

在过去的几天里,我一直在努力找出这个问题,但运气不太好。基本上,我的gps侦听器是这样注册的,用于获取gps事件:

    private void registerForNotifications(int gpsActivationIntervalMillis) {
    // gps satellite based
    gpsLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, gpsActivationIntervalMillis, AppSettings.getMinimumDistance(),gpsLocationListener);
    gpsLocationManager.addGpsStatusListener(gpsLocationListener);
}
并使用以下代码注销:

    private void unRegisterForNotifications() {
    gpsLocationManager.removeUpdates(gpsLocationListener);
    gpsLocationManager.removeGpsStatusListener(gpsLocationListener);        
}
这是在后台服务上完成的,运行非常完美。但是,当我尝试通过取消注册和以不同间隔注册来更改间隔时:

私有void restart(){ 登记装饰(间隔); 取消注册通知(); }

,我遇到了这样的情况:

05-21 13:12:56.354:WARN/MessageQueue(7290):处理程序{460f47a8}向死线程上的处理程序发送消息 05-21 13:12:56.354:WARN/MessageQueue(7290):java.lang.RuntimeException:处理程序{460f47a8}向死线程上的处理程序发送消息 05-21 13:12:56.354:WARN/MessageQueue(7290):位于android.os.MessageQueue.enqueueMessage(MessageQueue.java:179) 05-21 13:12:56.354:WARN/MessageQueue(7290):位于android.os.Handler.sendMessageAtTime(Handler.java:457) 05-21 13:12:56.354:WARN/MessageQueue(7290):位于android.os.Handler.sendMessageDelayed(Handler.java:430) 05-21 13:12:56.354:WARN/MessageQueue(7290):在android.os.Handler.sendMessage(Handler.java:367) 05-21 13:12:56.354:WARN/MessageQueue(7290):在android.location.LocationManager$ListenerTransport.onLocationChanged(LocationManager.java:157) 05-21 13:12:56.354:WARN/MessageQueue(7290):位于android.location.ILocationListener$Stub.onTransact(ILocationListener.java:58) 05-21 13:12:56.354:WARN/MessageQueue(7290):位于android.os.Binder.execTransact(Binder.java:288) 05-21 13:12:56.354:WARN/MessageQueue(7290):在dalvik.system.NativeStart.run(本机方法) 大宗报价


看起来像是死了的活动/处理程序问题,但安卓不应该处理这个问题吗?如何正确更改gps订阅流程?

好的,我找到了问题的原因。我的活动中有一个重启按钮,可以正确重启服务。但是当我的AlarmListener试图从后台重新启动它时,问题就出现了。我没有注意到“register”方法应该总是从循环器线程调用!解决方案很简单,只需将重启作业发布到连接到主线程的处理程序,而不是直接从AlarmManager线程调用重启方法

你的意思是由处理程序启动接收器吗?