forked from upstream-mirrors/OpenTracks
Make SharePreferenceListener instance variables so they do not get
garbage collected early.
This commit is contained in:
@@ -56,7 +56,17 @@ import java.util.concurrent.BlockingQueue;
|
|||||||
*
|
*
|
||||||
* @author Leif Hendrik Wilden
|
* @author Leif Hendrik Wilden
|
||||||
*/
|
*/
|
||||||
public class MapOverlay extends Overlay implements OnSharedPreferenceChangeListener {
|
public class MapOverlay extends Overlay {
|
||||||
|
|
||||||
|
private final OnSharedPreferenceChangeListener
|
||||||
|
sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||||
|
if (PreferencesUtils.getKey(context, R.string.track_color_mode_key).equals(key)) {
|
||||||
|
trackPathPainter = TrackPathPainterFactory.getTrackPathPainter(context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private final List<Waypoint> waypoints;
|
private final List<Waypoint> waypoints;
|
||||||
@@ -181,7 +191,7 @@ public class MapOverlay extends Overlay implements OnSharedPreferenceChangeListe
|
|||||||
trackPathPainter = TrackPathPainterFactory.getTrackPathPainter(context);
|
trackPathPainter = TrackPathPainterFactory.getTrackPathPainter(context);
|
||||||
|
|
||||||
context.getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE)
|
context.getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE)
|
||||||
.registerOnSharedPreferenceChangeListener(this);
|
.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -366,13 +376,6 @@ public class MapOverlay extends Overlay implements OnSharedPreferenceChangeListe
|
|||||||
return super.onTap(geoPoint, mapView);
|
return super.onTap(geoPoint, mapView);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
|
||||||
if (PreferencesUtils.getKey(context, R.string.track_color_mode_key).equals(key)) {
|
|
||||||
trackPathPainter = TrackPathPainterFactory.getTrackPathPainter(context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the points.
|
* Gets the points.
|
||||||
*/
|
*/
|
||||||
|
|||||||
+14
-11
@@ -37,8 +37,19 @@ import android.util.Log;
|
|||||||
*
|
*
|
||||||
* @author Vangelis S.
|
* @author Vangelis S.
|
||||||
*/
|
*/
|
||||||
public class DynamicSpeedTrackPathDescriptor
|
public class DynamicSpeedTrackPathDescriptor implements TrackPathDescriptor {
|
||||||
implements TrackPathDescriptor, OnSharedPreferenceChangeListener {
|
|
||||||
|
private final OnSharedPreferenceChangeListener
|
||||||
|
sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||||
|
if (PreferencesUtils.getKey(context, R.string.track_color_mode_percentage_key)
|
||||||
|
.equals(key)) {
|
||||||
|
speedMargin = PreferencesUtils.getInt(context, R.string.track_color_mode_percentage_key,
|
||||||
|
PreferencesUtils.TRACK_COLOR_MODE_PERCENTAGE_DEFAULT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private int speedMargin;
|
private int speedMargin;
|
||||||
@@ -54,7 +65,7 @@ public class DynamicSpeedTrackPathDescriptor
|
|||||||
speedMargin = PreferencesUtils.getInt(context, R.string.track_color_mode_percentage_key,
|
speedMargin = PreferencesUtils.getInt(context, R.string.track_color_mode_percentage_key,
|
||||||
PreferencesUtils.TRACK_COLOR_MODE_PERCENTAGE_DEFAULT);
|
PreferencesUtils.TRACK_COLOR_MODE_PERCENTAGE_DEFAULT);
|
||||||
context.getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE)
|
context.getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE)
|
||||||
.registerOnSharedPreferenceChangeListener(this);
|
.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -93,14 +104,6 @@ public class DynamicSpeedTrackPathDescriptor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
|
||||||
if (PreferencesUtils.getKey(context, R.string.track_color_mode_percentage_key).equals(key)) {
|
|
||||||
speedMargin = PreferencesUtils.getInt(context, R.string.track_color_mode_percentage_key,
|
|
||||||
PreferencesUtils.TRACK_COLOR_MODE_PERCENTAGE_DEFAULT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the average moving speed and the new average moving speed
|
* Returns true if the average moving speed and the new average moving speed
|
||||||
* are significantly different.
|
* are significantly different.
|
||||||
|
|||||||
+18
-14
@@ -29,8 +29,23 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
|
|||||||
*
|
*
|
||||||
* @author Vangelis S.
|
* @author Vangelis S.
|
||||||
*/
|
*/
|
||||||
public class FixedSpeedTrackPathDescriptor
|
public class FixedSpeedTrackPathDescriptor implements TrackPathDescriptor {
|
||||||
implements TrackPathDescriptor, OnSharedPreferenceChangeListener {
|
|
||||||
|
private final OnSharedPreferenceChangeListener
|
||||||
|
sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||||
|
if (PreferencesUtils.getKey(context, R.string.track_color_mode_slow_key).equals(key)) {
|
||||||
|
slowSpeed = PreferencesUtils.getInt(context, R.string.track_color_mode_slow_key,
|
||||||
|
PreferencesUtils.TRACK_COLOR_MODE_SLOW_DEFAULT);
|
||||||
|
} else if (PreferencesUtils.getKey(context, R.string.track_color_mode_medium_key)
|
||||||
|
.equals(key)) {
|
||||||
|
normalSpeed = PreferencesUtils.getInt(context, R.string.track_color_mode_medium_key,
|
||||||
|
PreferencesUtils.TRACK_COLOR_MODE_MEDIUM_DEFAULT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private int slowSpeed;
|
private int slowSpeed;
|
||||||
private int normalSpeed;
|
private int normalSpeed;
|
||||||
@@ -43,7 +58,7 @@ public class FixedSpeedTrackPathDescriptor
|
|||||||
normalSpeed = PreferencesUtils.getInt(context, R.string.track_color_mode_medium_key,
|
normalSpeed = PreferencesUtils.getInt(context, R.string.track_color_mode_medium_key,
|
||||||
PreferencesUtils.TRACK_COLOR_MODE_MEDIUM_DEFAULT);
|
PreferencesUtils.TRACK_COLOR_MODE_MEDIUM_DEFAULT);
|
||||||
context.getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE)
|
context.getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE)
|
||||||
.registerOnSharedPreferenceChangeListener(this);
|
.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -60,15 +75,4 @@ public class FixedSpeedTrackPathDescriptor
|
|||||||
public boolean updateState() {
|
public boolean updateState() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
|
||||||
if (PreferencesUtils.getKey(context, R.string.track_color_mode_slow_key).equals(key)) {
|
|
||||||
slowSpeed = PreferencesUtils.getInt(context, R.string.track_color_mode_slow_key,
|
|
||||||
PreferencesUtils.TRACK_COLOR_MODE_SLOW_DEFAULT);
|
|
||||||
} else if (PreferencesUtils.getKey(context, R.string.track_color_mode_medium_key).equals(key)) {
|
|
||||||
normalSpeed = PreferencesUtils.getInt(context, R.string.track_color_mode_medium_key,
|
|
||||||
PreferencesUtils.TRACK_COLOR_MODE_MEDIUM_DEFAULT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -52,8 +52,7 @@ import android.widget.RemoteViews;
|
|||||||
* @author Sandor Dornbush
|
* @author Sandor Dornbush
|
||||||
* @author Paul R. Saxman
|
* @author Paul R. Saxman
|
||||||
*/
|
*/
|
||||||
public class TrackWidgetProvider extends AppWidgetProvider
|
public class TrackWidgetProvider extends AppWidgetProvider {
|
||||||
implements OnSharedPreferenceChangeListener {
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Observer for track content.
|
* Observer for track content.
|
||||||
@@ -99,43 +98,50 @@ public class TrackWidgetProvider extends AppWidgetProvider
|
|||||||
handler = new Handler();
|
handler = new Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private final OnSharedPreferenceChangeListener
|
||||||
public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
|
sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() {
|
||||||
if (key == null
|
@Override
|
||||||
|| key.equals(PreferencesUtils.getKey(context, R.string.selected_track_id_key))) {
|
public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
|
||||||
selectedTrackId = PreferencesUtils.getLong(context, R.string.selected_track_id_key);
|
if (key == null
|
||||||
}
|
|| key.equals(PreferencesUtils.getKey(context, R.string.selected_track_id_key))) {
|
||||||
if (key == null
|
selectedTrackId = PreferencesUtils.getLong(context, R.string.selected_track_id_key);
|
||||||
|| key.equals(PreferencesUtils.getKey(context, R.string.recording_track_id_key))) {
|
}
|
||||||
long oldValue = recordingTrackId;
|
if (key == null
|
||||||
recordingTrackId = PreferencesUtils.getLong(context, R.string.recording_track_id_key);
|
|| key.equals(PreferencesUtils.getKey(context, R.string.recording_track_id_key))) {
|
||||||
if (oldValue == PreferencesUtils.RECORDING_TRACK_ID_DEFAULT
|
long oldValue = recordingTrackId;
|
||||||
&& recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT) {
|
recordingTrackId = PreferencesUtils.getLong(context, R.string.recording_track_id_key);
|
||||||
recordingtrackPaused = false;
|
if (oldValue == PreferencesUtils.RECORDING_TRACK_ID_DEFAULT
|
||||||
}
|
&& recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT) {
|
||||||
}
|
recordingtrackPaused = false;
|
||||||
if (key == null
|
}
|
||||||
|| key.equals(PreferencesUtils.getKey(context, R.string.recording_track_paused_key))) {
|
}
|
||||||
recordingtrackPaused = PreferencesUtils.getBoolean(context,
|
if (key == null || key.equals(
|
||||||
R.string.recording_track_paused_key, PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT);
|
PreferencesUtils.getKey(context, R.string.recording_track_paused_key))) {
|
||||||
}
|
recordingtrackPaused = PreferencesUtils.getBoolean(context,
|
||||||
if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.metric_units_key))) {
|
R.string.recording_track_paused_key,
|
||||||
metricUnits = PreferencesUtils.getBoolean(
|
PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT);
|
||||||
context, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT);
|
}
|
||||||
}
|
if (key == null
|
||||||
if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.report_speed_key))) {
|
|| key.equals(PreferencesUtils.getKey(context, R.string.metric_units_key))) {
|
||||||
reportSpeed = PreferencesUtils.getBoolean(
|
metricUnits = PreferencesUtils.getBoolean(
|
||||||
context, R.string.report_speed_key, PreferencesUtils.REPORT_SPEED_DEFAULT);
|
context, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT);
|
||||||
}
|
}
|
||||||
if (key == null
|
if (key == null
|
||||||
|| key.equals(PreferencesUtils.getKey(context, R.string.stats_show_moving_time_key))) {
|
|| key.equals(PreferencesUtils.getKey(context, R.string.report_speed_key))) {
|
||||||
showMovingTime = PreferencesUtils.getBoolean(context, R.string.stats_show_moving_time_key,
|
reportSpeed = PreferencesUtils.getBoolean(
|
||||||
PreferencesUtils.STATS_SHOW_MOVING_TIME_DEFAULT);
|
context, R.string.report_speed_key, PreferencesUtils.REPORT_SPEED_DEFAULT);
|
||||||
}
|
}
|
||||||
if (key != null) {
|
if (key == null || key.equals(
|
||||||
update();
|
PreferencesUtils.getKey(context, R.string.stats_show_moving_time_key))) {
|
||||||
}
|
showMovingTime = PreferencesUtils.getBoolean(context,
|
||||||
}
|
R.string.stats_show_moving_time_key,
|
||||||
|
PreferencesUtils.STATS_SHOW_MOVING_TIME_DEFAULT);
|
||||||
|
}
|
||||||
|
if (key != null) {
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context aContext, Intent intent) {
|
public void onReceive(Context aContext, Intent intent) {
|
||||||
@@ -150,8 +156,8 @@ public class TrackWidgetProvider extends AppWidgetProvider
|
|||||||
unknown = context.getString(R.string.value_unknown);
|
unknown = context.getString(R.string.value_unknown);
|
||||||
|
|
||||||
sharedPreferences = context.getSharedPreferences(SETTINGS_NAME, Context.MODE_PRIVATE);
|
sharedPreferences = context.getSharedPreferences(SETTINGS_NAME, Context.MODE_PRIVATE);
|
||||||
sharedPreferences.registerOnSharedPreferenceChangeListener(this);
|
sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
||||||
onSharedPreferenceChanged(sharedPreferences, null);
|
sharedPreferenceChangeListener.onSharedPreferenceChanged(sharedPreferences, null);
|
||||||
context.getContentResolver()
|
context.getContentResolver()
|
||||||
.registerContentObserver(TracksColumns.CONTENT_URI, true, trackObserver);
|
.registerContentObserver(TracksColumns.CONTENT_URI, true, trackObserver);
|
||||||
}
|
}
|
||||||
@@ -165,7 +171,7 @@ public class TrackWidgetProvider extends AppWidgetProvider
|
|||||||
@Override
|
@Override
|
||||||
public void onDisabled(Context aContext) {
|
public void onDisabled(Context aContext) {
|
||||||
if (sharedPreferences != null) {
|
if (sharedPreferences != null) {
|
||||||
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
|
sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
||||||
}
|
}
|
||||||
if (trackObserver != null) {
|
if (trackObserver != null) {
|
||||||
aContext.getContentResolver().unregisterContentObserver(trackObserver);
|
aContext.getContentResolver().unregisterContentObserver(trackObserver);
|
||||||
|
|||||||
Reference in New Issue
Block a user