Forced faultTimer to run on UI thread using handler, because otherwise using pebble datasource gave an error about not having run Looper.prepare...

This commit is contained in:
Graham Jones
2015-12-23 22:14:19 +00:00
parent 7e893758c7
commit 6d27e0dfe9

View File

@@ -42,6 +42,7 @@ import android.media.AudioManager;
import android.media.ToneGenerator; import android.media.ToneGenerator;
import android.os.CountDownTimer; import android.os.CountDownTimer;
import android.os.Environment; import android.os.Environment;
import android.os.Handler;
import android.os.HandlerThread; import android.os.HandlerThread;
import android.os.Binder; import android.os.Binder;
import android.os.IBinder; import android.os.IBinder;
@@ -106,6 +107,7 @@ public class SdServer extends Service implements SdDataReceiver {
private boolean mLogData = false; private boolean mLogData = false;
private File mOutFile; private File mOutFile;
private OsdUtil mUtil; private OsdUtil mUtil;
private Handler mHandler;
private final IBinder mBinder = new SdBinder(); private final IBinder mBinder = new SdBinder();
@@ -135,6 +137,10 @@ public class SdServer extends Service implements SdDataReceiver {
return mBinder; return mBinder;
} }
/** used to make suer timers run on UI thread */
private void runOnUiThread(Runnable runnable) {
mHandler.post(runnable);
}
/** /**
* onCreate() - called when services is created. Starts message * onCreate() - called when services is created. Starts message
@@ -143,6 +149,7 @@ public class SdServer extends Service implements SdDataReceiver {
@Override @Override
public void onCreate() { public void onCreate() {
Log.v(TAG, "onCreate()"); Log.v(TAG, "onCreate()");
mHandler = new Handler();
mUtil = new OsdUtil(getApplicationContext()); mUtil = new OsdUtil(getApplicationContext());
@@ -741,12 +748,16 @@ public class SdServer extends Service implements SdDataReceiver {
Log.v(TAG, "startFaultTimer(): fault timer already running - not doing anything."); Log.v(TAG, "startFaultTimer(): fault timer already running - not doing anything.");
} else { } else {
Log.v(TAG, "startFaultTimer(): starting fault timer."); Log.v(TAG, "startFaultTimer(): starting fault timer.");
runOnUiThread(new Runnable() {
public void run() {
mFaultTimerCompleted = false; mFaultTimerCompleted = false;
mFaultTimer = mFaultTimer =
// convert to ms. // convert to ms.
new FaultTimer(mFaultTimerPeriod * 1000, 1000); new FaultTimer(mFaultTimerPeriod * 1000, 1000);
mFaultTimer.start(); mFaultTimer.start();
} }
});
}
} }
public void stopFaultTimer() { public void stopFaultTimer() {