diff options
| -rw-r--r-- | altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java | 25 | ||||
| -rw-r--r-- | altoslib/AltosPreferences.java | 16 | 
2 files changed, 21 insertions, 20 deletions
| diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java index 4b26d263..7c5fde50 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java @@ -263,7 +263,7 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene  		telem.update_state(state);  		telemetry_state.states.put(telem.serial, state);  		if (state != null) { -			AltosPreferences.set_state(telem.serial, state, null); +			AltosPreferences.set_state(state);  		}  		send_to_clients();  	} @@ -613,24 +613,21 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene  		telemetry_state.latest_serial = AltosPreferences.latest_state();  		for (int serial : serials) { -			AltosSavedState saved_state = AltosPreferences.state(serial); +			AltosState saved_state = AltosPreferences.state(serial);  			if (saved_state != null) { -				if (serial == 0) { -					serial = saved_state.state.serial; -					AltosPreferences.set_state(serial, saved_state.state, saved_state.listener_state); -					AltosPreferences.remove_state(0); -				}  				if (telemetry_state.latest_serial == 0)  					telemetry_state.latest_serial = serial; -				AltosDebug.debug("recovered old state serial %d flight %d\n", +				AltosDebug.debug("recovered old state serial %d flight %d",  						 serial, -						 saved_state.state.flight); -				if (saved_state.state.gps != null) -					AltosDebug.debug("\tposition %f,%f\n", -							 saved_state.state.gps.lat, -							 saved_state.state.gps.lon); -				telemetry_state.states.put(serial, saved_state.state); +						 saved_state.flight); +				if (saved_state.gps != null) +					AltosDebug.debug("\tposition %f,%f", +							 saved_state.gps.lat, +							 saved_state.gps.lon); +				telemetry_state.states.put(serial, saved_state); +			} else { +				AltosDebug.debug("Failed to recover state for %d", serial);  			}  		}  	} diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index cc340d03..fb3026a4 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -350,12 +350,12 @@ public class AltosPreferences {  		}  	} -	public static void set_state(int serial, AltosState state, AltosListenerState listener_state) { +	public static void set_state(AltosState state) {  		synchronized(backend) { -			backend.putSerializable(String.format(statePreferenceFormat, serial), -						new AltosSavedState(state, listener_state)); -			backend.putInt(statePreferenceLatest, serial); +			backend.putSerializable(String.format(statePreferenceFormat, state.serial), state); +			backend.putInt(statePreferenceLatest, state.serial); +			flush_preferences();  		}  	} @@ -389,9 +389,13 @@ public class AltosPreferences {  		return latest;  	} -	public static AltosSavedState state(int serial) { +	public static AltosState state(int serial) {  		synchronized(backend) { -			return (AltosSavedState) backend.getSerializable(String.format(statePreferenceFormat, serial), null); +			try { +				return (AltosState) backend.getSerializable(String.format(statePreferenceFormat, serial), null); +			} catch (Exception e) { +				return null; +			}  		}  	} | 
