From 31df49a884b774834a34821c4ca8aff543631f5f Mon Sep 17 00:00:00 2001 From: orignal Date: Wed, 7 Feb 2018 14:08:22 -0500 Subject: [PATCH] Revert "quit features replaced by stop; gradle upgraded; i2pd version name updated at build.gradle" --- android/AndroidManifest.xml | 8 +-- android/build.gradle | 4 +- android/res/menu/options_main.xml | 10 ++-- android/res/values/strings.xml | 9 ++- .../org/purplei2p/i2pd/DaemonSingleton.java | 6 +- .../org/purplei2p/i2pd/ForegroundService.java | 2 +- .../i2pd/{I2PDActivity.java => I2PD.java} | 56 +++++++++++-------- 7 files changed, 50 insertions(+), 45 deletions(-) rename android/src/org/purplei2p/i2pd/{I2PDActivity.java => I2PD.java} (85%) diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index 95fff3ff..3ae952b3 100755 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -1,20 +1,20 @@ + android:versionName="2.18.0" + android:installLocation="auto"> - + - diff --git a/android/build.gradle b/android/build.gradle index 821dbc16..a88403fd 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -4,7 +4,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' + classpath 'com.android.tools.build:gradle:2.1.2' } } @@ -18,7 +18,7 @@ android { targetSdkVersion 25 minSdkVersion 14 versionCode 1 - versionName "2.18.0" + versionName "2.17.1" } sourceSets { main { diff --git a/android/res/menu/options_main.xml b/android/res/menu/options_main.xml index aef67c51..f66caa2a 100644 --- a/android/res/menu/options_main.xml +++ b/android/res/menu/options_main.xml @@ -2,15 +2,15 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" - tools:context=".I2PDActivity"> + tools:context=".I2PD"> diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml index c147a808..0b8bef38 100755 --- a/android/res/values/strings.xml +++ b/android/res/values/strings.xml @@ -4,9 +4,8 @@ i2pd started i2pd service started i2pd service stopped - Stop - Graceful Stop - Graceful stop is already in progress - Graceful stop is in progress - Already stopped + Quit + Graceful Quit + Graceful quit is already in progress + Graceful quit is in progress diff --git a/android/src/org/purplei2p/i2pd/DaemonSingleton.java b/android/src/org/purplei2p/i2pd/DaemonSingleton.java index 64568f83..65afd0f5 100644 --- a/android/src/org/purplei2p/i2pd/DaemonSingleton.java +++ b/android/src/org/purplei2p/i2pd/DaemonSingleton.java @@ -32,7 +32,7 @@ public class DaemonSingleton { private boolean startedOkay; - public static enum State {uninitialized,starting,jniLibraryLoaded,startedOkay,startFailed,gracefulShutdownInProgress,stopped}; + public static enum State {uninitialized,starting,jniLibraryLoaded,startedOkay,startFailed,gracefulShutdownInProgress}; private State state = State.uninitialized; @@ -121,10 +121,6 @@ public class DaemonSingleton { if(isStartedOkay()){ try {I2PD_JNI.stopDaemon();}catch(Throwable tr){Log.e(TAG, "", tr);} setStartedOkay(false); - synchronized (DaemonSingleton.this) { - state = State.stopped; - fireStateUpdate(); - } } } } diff --git a/android/src/org/purplei2p/i2pd/ForegroundService.java b/android/src/org/purplei2p/i2pd/ForegroundService.java index 74761b07..bfd650c8 100644 --- a/android/src/org/purplei2p/i2pd/ForegroundService.java +++ b/android/src/org/purplei2p/i2pd/ForegroundService.java @@ -75,7 +75,7 @@ public class ForegroundService extends Service { // The PendingIntent to launch our activity if the user selects this notification PendingIntent contentIntent = PendingIntent.getActivity(this, 0, - new Intent(this, I2PDActivity.class), 0); + new Intent(this, I2PD.class), 0); // Set the info for the views that show in the notification panel. Notification notification = new Notification.Builder(this) diff --git a/android/src/org/purplei2p/i2pd/I2PDActivity.java b/android/src/org/purplei2p/i2pd/I2PD.java similarity index 85% rename from android/src/org/purplei2p/i2pd/I2PDActivity.java rename to android/src/org/purplei2p/i2pd/I2PD.java index 36e992b3..a2494b2b 100755 --- a/android/src/org/purplei2p/i2pd/I2PDActivity.java +++ b/android/src/org/purplei2p/i2pd/I2PD.java @@ -5,11 +5,13 @@ import java.io.StringWriter; import java.util.Timer; import java.util.TimerTask; +import android.annotation.SuppressLint; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; +import android.os.Build; import android.os.Bundle; import android.os.IBinder; import android.util.Log; @@ -18,7 +20,7 @@ import android.view.MenuItem; import android.widget.TextView; import android.widget.Toast; -public class I2PDActivity extends Activity { +public class I2PD extends Activity { private static final String TAG = "i2pd"; private TextView textView; @@ -79,11 +81,11 @@ public class I2PDActivity extends Activity { gracefulQuitTimer.cancel(); setGracefulQuitTimer(null); } -// try{ -// doUnbindService(); -// }catch(Throwable tr){ -// Log.e(TAG, "", tr); -// } + try{ + doUnbindService(); + }catch(Throwable tr){ + Log.e(TAG, "", tr); + } } private CharSequence throwableToString(Throwable tr) { @@ -124,8 +126,7 @@ public class I2PDActivity extends Activity { private boolean mIsBound; - private synchronized void doBindService() { - if(mIsBound)return; + private void doBindService() { // Establish a connection with the service. We use an explicit // class name because we want a specific service implementation that // we know will be running in our own process (and thus won't be @@ -158,39 +159,48 @@ public class I2PDActivity extends Activity { int id = item.getItemId(); switch(id){ - case R.id.action_stop: - i2pdStop(); + case R.id.action_quit: + quit(); return true; - case R.id.action_graceful_stop: - i2pdGracefulStop(); + case R.id.action_graceful_quit: + gracefulQuit(); return true; } return super.onOptionsItemSelected(item); } - private void i2pdStop() { + @SuppressLint("NewApi") + private void quit() { + try { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + finishAndRemoveTask(); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + finishAffinity(); + } else { + //moveTaskToBack(true); + finish(); + } + }catch (Throwable tr) { + Log.e(TAG, "", tr); + } try{ daemon.stopDaemon(); }catch (Throwable tr) { Log.e(TAG, "", tr); } + System.exit(0); } private Timer gracefulQuitTimer; private final Object gracefulQuitTimerLock = new Object(); - private synchronized void i2pdGracefulStop() { - if(daemon.getState()==DaemonSingleton.State.stopped){ - Toast.makeText(this, R.string.already_stopped, - Toast.LENGTH_SHORT).show(); - return; - } + private void gracefulQuit() { if(getGracefulQuitTimer()!=null){ - Toast.makeText(this, R.string.graceful_stop_is_already_in_progress, + Toast.makeText(this, R.string.graceful_quit_is_already_in_progress, Toast.LENGTH_SHORT).show(); return; } - Toast.makeText(this, R.string.graceful_stop_is_in_progress, + Toast.makeText(this, R.string.graceful_quit_is_in_progress, Toast.LENGTH_SHORT).show(); new Thread(new Runnable(){ @@ -206,12 +216,12 @@ public class I2PDActivity extends Activity { @Override public void run() { - i2pdStop(); + quit(); } }, 10*60*1000/*milliseconds*/); }else{ - i2pdStop(); + quit(); } } catch(Throwable tr) { Log.e(TAG,"",tr);