소스 검색

RecorderService improvements

Fix NPE when destroying after only binding. Closes #59
Potential fix for not logging data when screen is off
tags/ActivityRecorder/0.1.1
Chris Smith 14 년 전
부모
커밋
37f4cf698a

BIN
code/ActivityRecorder/dist/ActivityRecorder.apk 파일 보기


+ 1
- 1
code/ActivityRecorder/src/uk/co/md87/android/activityrecorder/ActivityRecorderActivity.java 파일 보기

@@ -22,7 +22,7 @@ import android.widget.ArrayAdapter;
22 22
 import android.widget.Button;
23 23
 import android.widget.ListView;
24 24
 import android.widget.Toast;
25
-import java.util.Map;
25
+
26 26
 import uk.co.md87.android.activityrecorder.rpc.ActivityRecorderBinder;
27 27
 import uk.co.md87.android.activityrecorder.rpc.Classification;
28 28
 import uk.co.md87.android.common.ExceptionHandler;

+ 12
- 8
code/ActivityRecorder/src/uk/co/md87/android/activityrecorder/RecorderService.java 파일 보기

@@ -173,10 +173,11 @@ public class RecorderService extends Service {
173 173
 
174 174
         manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
175 175
         handler.postDelayed(registerRunnable, 1000);
176
+
177
+        wl.acquire();
176 178
     }
177 179
 
178 180
     void register() {
179
-        wl.acquire();
180 181
         Log.i(getClass().getName(), "Registering");
181 182
         nextSample = 0;
182 183
         manager.registerListener(accelListener,
@@ -188,19 +189,22 @@ public class RecorderService extends Service {
188 189
 
189 190
     void unregister() {
190 191
         manager.unregisterListener(accelListener);
191
-        wl.release();
192 192
     }
193 193
 
194 194
     @Override
195 195
     public void onDestroy() {
196 196
         super.onDestroy();
197
-        
198
-        running = false;
199 197
 
200
-        handler.removeCallbacks(sampleRunnable);
201
-        handler.removeCallbacks(registerRunnable);
202
-        
203
-        unregister();
198
+        if (running) {
199
+            running = false;
200
+
201
+            handler.removeCallbacks(sampleRunnable);
202
+            handler.removeCallbacks(registerRunnable);
203
+
204
+            unregister();
205
+
206
+            wl.release();
207
+        }
204 208
     }
205 209
 
206 210
 }

Loading…
취소
저장