diff --git a/res/values/strings.xml b/res/values/strings.xml index 7030a37f..87aa35fe 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -11,7 +11,7 @@ Orbot is starting… Connected to the Tor network Orbot is deactivated - Orbot is shutting down + TorService is shutting down Starting Tor client… complete. waiting. diff --git a/src/org/torproject/android/OrbotMainActivity.java b/src/org/torproject/android/OrbotMainActivity.java index d286c471..7b0bb311 100644 --- a/src/org/torproject/android/OrbotMainActivity.java +++ b/src/org/torproject/android/OrbotMainActivity.java @@ -121,22 +121,16 @@ public class OrbotMainActivity extends Activity implements OrbotConstants, OnLon torService.setAction(action); startService(torService); } - - private void stopService () - { - - Intent torService = new Intent(this, TorService.class); - stopService(torService); - - } - - + + private void stopTor() { + Intent torService = new Intent(this, TorService.class); + stopService(torService); + } + // Our handler for received Intents. This will be called whenever an Intent // with an action named "custom-event-name" is broadcasted. private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { - - - + @Override public void onReceive(Context context, Intent intent) { // Get extra data included in the Intent @@ -425,34 +419,21 @@ public class OrbotMainActivity extends Activity implements OrbotConstants, OnLon } - - /** - * This is our attempt to REALLY exit Orbot, and stop the background service - * However, Android doesn't like people "quitting" apps, and/or our code may not - * be quite right b/c no matter what we do, it seems like the TorService still exists - **/ - private void doExit () - { - try { - - //one of the confusing things about all of this code is the multiple - //places where things like "stopTor" are called, both in the Activity and the Service - //not something to tackle in your first iteration, but i thin we can talk about fixing - //terminology but also making sure there are clear distinctions in control - stopTor(); - stopService (); - - - } catch (RemoteException e) { - Log.w(TAG, e); - } - - //Kill all the wizard activities - setResult(RESULT_CLOSE_ALL); - finish(); - - } - + + /** + * This is our attempt to REALLY exit Orbot, and stop the background service + * However, Android doesn't like people "quitting" apps, and/or our code may + * not be quite right b/c no matter what we do, it seems like the TorService + * still exists + **/ + private void doExit() { + stopTor(); + + // Kill all the wizard activities + setResult(RESULT_CLOSE_ALL); + finish(); + } + protected void onPause() { try { @@ -1223,49 +1204,20 @@ public class OrbotMainActivity extends Activity implements OrbotConstants, OnLon msg.getData().putString(HANDLER_TOR_MSG, getString(R.string.status_starting_up)); mStatusUpdateHandler.sendMessage(msg); } - - //now we stop Tor! amazing! - private void stopTor () throws RemoteException - { - sendIntentToService (TorServiceConstants.CMD_STOP); - torStatus = TorServiceConstants.STATUS_OFF; - Message msg = mStatusUpdateHandler.obtainMessage(TorServiceConstants.DISABLE_TOR_MSG); - mStatusUpdateHandler.sendMessage(msg); - } - - /* - * (non-Javadoc) - * @see android.view.View.OnClickListener#onClick(android.view.View) - */ - public boolean onLongClick(View view) { - - try - { - - if (torStatus == TorServiceConstants.STATUS_OFF) - { - startTor(); - } - else - { - - stopTor(); - stopService (); - - } - - return true; - + public boolean onLongClick(View view) { + try { + if (torStatus == TorServiceConstants.STATUS_OFF) { + startTor(); + } else { + stopTor(); } - catch (Exception e) - { - Log.d(TAG,"error onclick",e); - } - - return false; - + return true; + } catch (RemoteException e) { + Log.d(TAG, "error onclick", e); } + return false; + } // this is what takes messages or values from the callback threads or other non-mainUI threads //and passes them back into the main UI thread for display to the user diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java index 58aa9ce1..5884f62d 100644 --- a/src/org/torproject/android/service/TorService.java +++ b/src/org/torproject/android/service/TorService.java @@ -343,8 +343,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon if (action != null) { if (action.equals(CMD_START)) { startTor(); - } else if (action.equals(CMD_STOP)) { - stopTor(); + // stopTor() is called when the Service is destroyed } else if (action.equals(CMD_NEWNYM)) { newIdentity(); } else if (action.equals(CMD_FLUSH)) { @@ -371,20 +370,9 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon } @Override - public boolean stopService(Intent name) { - logNotice("TorService is being stopped: " + name); - return super.stopService(name); - } - - @Override - public void onDestroy () - { - Log.i("TorService", "onDestroy"); - String msg = ("TorService is being DESTROYED... shutting down!"); - Log.d(TAG, msg); - sendCallbackLogMessage(msg); + public void onDestroy() { + stopTor(); unregisterReceiver(mNetworkStateReceiver); - clearNotifications (); super.onDestroy(); } @@ -392,9 +380,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon Log.i("TorService", "stopTor"); try { sendCallbackStatus(STATUS_STOPPING); - sendCallbackLogMessage(getString(R.string.status_shutting_down)); - Log.d(TAG,"Tor is stopping NOW"); killAllDaemons(); @@ -408,13 +394,10 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon shellRoot.close(); } - clearNotifications(); - sendCallbackLogMessage(getString(R.string.status_disabled)); } catch (CannotKillException e) { - Log.d(TAG, "An error occured stopping Tor", e); logNotice("An error occured stopping Tor: " + e.getMessage()); sendCallbackLogMessage(getString(R.string.unable_to_reset_tor)); showToolbarNotification(getString(R.string.unable_to_reset_tor), @@ -422,11 +405,10 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon } catch (Exception e) { - Log.d(TAG, "An error occured stopping Tor",e); logNotice("An error occured stopping Tor: " + e.getMessage()); sendCallbackLogMessage(getString(R.string.something_bad_happened)); } - + clearNotifications(); sendCallbackStatus(STATUS_OFF); } diff --git a/src/org/torproject/android/service/TorServiceConstants.java b/src/org/torproject/android/service/TorServiceConstants.java index fdf5e77f..7a5a14a5 100644 --- a/src/org/torproject/android/service/TorServiceConstants.java +++ b/src/org/torproject/android/service/TorServiceConstants.java @@ -84,7 +84,6 @@ public interface TorServiceConstants { public static final int LOG_MSG = 4; public static final String CMD_START = "start"; - public static final String CMD_STOP = "stop"; public static final String CMD_FLUSH = "flush"; public static final String CMD_NEWNYM = "newnym"; public static final String CMD_VPN = "vpn";