From 53caad9f2afc84dc92018a3ad5f0d3ba8a8dfabc Mon Sep 17 00:00:00 2001 From: sponge <sponge@mail.i2p> Date: Tue, 11 Sep 2012 12:44:00 +0000 Subject: [PATCH] Fix state recognition on restart. --- .../i2p/android/router/activity/MainActivity.java | 10 ++++++++-- .../i2p/android/router/service/RouterService.java | 12 ++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/net/i2p/android/router/activity/MainActivity.java b/src/net/i2p/android/router/activity/MainActivity.java index 609ab0e3d..e5bba050c 100644 --- a/src/net/i2p/android/router/activity/MainActivity.java +++ b/src/net/i2p/android/router/activity/MainActivity.java @@ -24,7 +24,7 @@ public class MainActivity extends I2PActivityBase { private Runnable _updater; private Runnable _oneShotUpdate; private String _savedStatus; - private boolean _keep; + private boolean _keep = true; protected static final String PROP_NEW_INSTALL = "i2p.newInstall"; @@ -272,13 +272,16 @@ public class MainActivity extends I2PActivityBase { @Override public void onBackPressed() { RouterContext ctx = getRouterContext(); + // RouterService svc = _routerService; _keep = Util.isConnected(this) && ctx != null; + Util.e("*********************************************************"); + Util.e("Back pressed, Keep? " + _keep); + Util.e("*********************************************************"); super.onBackPressed(); } @Override public void onDestroy() { - // RouterContext ctx = getRouterContext(); super.onDestroy(); if (!_keep) { Thread t = new Thread(new KillMe()); @@ -288,6 +291,9 @@ public class MainActivity extends I2PActivityBase { private class KillMe implements Runnable { public void run() { + Util.e("*********************************************************"); + Util.e("KillMe started!"); + Util.e("*********************************************************"); try { Thread.sleep(500); // is 500ms long enough? } catch (InterruptedException ex) { diff --git a/src/net/i2p/android/router/service/RouterService.java b/src/net/i2p/android/router/service/RouterService.java index 254394b65..0c99d79fe 100644 --- a/src/net/i2p/android/router/service/RouterService.java +++ b/src/net/i2p/android/router/service/RouterService.java @@ -28,8 +28,8 @@ import net.i2p.util.OrderedProperties; */ public class RouterService extends Service { + // These states persist even if we died... Yuck, it causes issues. public enum State { - INIT, WAITING, STARTING, RUNNING, // unplanned (router stopped itself), next: killSelf() STOPPING, STOPPED, @@ -80,8 +80,11 @@ public class RouterService extends Service { Intent intent = new Intent(this, RouterService.class); intent.putExtra(EXTRA_RESTART, true); onStartCommand(intent, 12345, 67890); - } else if(lastState == State.MANUAL_QUITTING || lastState == State.MANUAL_QUITTED) { - stopSelf(); // Die. + } else if(lastState == State.MANUAL_QUITTING) { + synchronized(_stateLock) { + setState(State.MANUAL_QUITTED); + stopSelf(); // Die. + } } } @@ -657,14 +660,15 @@ public class RouterService extends Service { || _state == State.STOPPING) { Util.i(this + " died of unknown causes"); setState(State.STOPPED); + stopForeground(true); stopSelf(); } else if(_state == State.MANUAL_QUITTING) { setState(State.MANUAL_QUITTED); + stopForeground(true); stopSelf(); } } } finally { - stopForeground(true); _statusBar.remove(); } } -- GitLab