From 3aafbd248f8869dfb21870c190944cf97d022e01 Mon Sep 17 00:00:00 2001 From: Branden Archer Date: Mon, 11 Jan 2016 22:49:04 -0500 Subject: [PATCH 1/2] Move code which saves pedometer state to a separate function --- .../bagi/levente/pedometer/StepService.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/name/bagi/levente/pedometer/StepService.java b/src/name/bagi/levente/pedometer/StepService.java index 75d371b..eb2db94 100644 --- a/src/name/bagi/levente/pedometer/StepService.java +++ b/src/name/bagi/levente/pedometer/StepService.java @@ -55,7 +55,6 @@ public class StepService extends Service { private SharedPreferences mSettings; private PedometerSettings mPedometerSettings; private SharedPreferences mState; - private SharedPreferences.Editor mStateEditor; private Utils mUtils; private SensorManager mSensorManager; private Sensor mSensor; @@ -172,15 +171,9 @@ public void onDestroy() { // Unregister our receiver. unregisterReceiver(mReceiver); unregisterDetector(); - - mStateEditor = mState.edit(); - mStateEditor.putInt("steps", mSteps); - mStateEditor.putInt("pace", mPace); - mStateEditor.putFloat("distance", mDistance); - mStateEditor.putFloat("speed", mSpeed); - mStateEditor.putFloat("calories", mCalories); - mStateEditor.commit(); - + + commitState(); + mNM.cancel(R.string.app_name); wakeLock.release(); @@ -194,6 +187,18 @@ public void onDestroy() { Toast.makeText(this, getText(R.string.stopped), Toast.LENGTH_SHORT).show(); } + private void commitState() + { + SharedPreferences.Editor stateEditor = mState.edit(); + stateEditor.putInt("steps", mSteps); + stateEditor.putInt("pace", mPace); + stateEditor.putFloat("distance", mDistance); + stateEditor.putFloat("speed", mSpeed); + stateEditor.putFloat("calories", mCalories); + stateEditor.commit(); + Log.i(TAG, "[SERVICE] saved pedometer state"); + } + private void registerDetector() { mSensor = mSensorManager.getDefaultSensor( Sensor.TYPE_ACCELEROMETER /*| From b0c75885dc944a0c943ecb53f1ca41a756a819df Mon Sep 17 00:00:00 2001 From: Branden Archer Date: Mon, 11 Jan 2016 22:51:09 -0500 Subject: [PATCH 2/2] Persist pedometer data on low memory callbacks If android is encountering a low memory situation, save the current pedometer counts. It is possible for Android to kill the app and restart it later when memory is available. Unless the pedometer values are saved, they will be lost. --- .../bagi/levente/pedometer/StepService.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/name/bagi/levente/pedometer/StepService.java b/src/name/bagi/levente/pedometer/StepService.java index eb2db94..9cf3f60 100644 --- a/src/name/bagi/levente/pedometer/StepService.java +++ b/src/name/bagi/levente/pedometer/StepService.java @@ -86,7 +86,22 @@ StepService getService() { return StepService.this; } } - + + @Override + public void onLowMemory() { + super.onLowMemory(); + + Log.i(TAG, "[SERVICE] onLowMemory"); + commitState(); + } + + @Override + public void onTrimMemory(int level) { + super.onTrimMemory(level); + Log.i(TAG, "[SERVICE] onTrimMemory(" + level + ")"); + commitState(); + } + @Override public void onCreate() { Log.i(TAG, "[SERVICE] onCreate");