quit features replaced by stop

This commit is contained in:
hypnosis-i2p 2018-02-03 19:55:32 +08:00
parent fbb9991128
commit 87f2eefd35
3 changed files with 29 additions and 35 deletions

View File

@ -32,7 +32,7 @@ public class DaemonSingleton {
private boolean startedOkay;
public static enum State {uninitialized,starting,jniLibraryLoaded,startedOkay,startFailed,gracefulShutdownInProgress};
public static enum State {uninitialized,starting,jniLibraryLoaded,startedOkay,startFailed,gracefulShutdownInProgress,stopped};
private State state = State.uninitialized;
@ -121,6 +121,10 @@ 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();
}
}
}
}

View File

@ -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, I2PD.class), 0);
new Intent(this, I2PDActivity.class), 0);
// Set the info for the views that show in the notification panel.
Notification notification = new Notification.Builder(this)

View File

@ -5,13 +5,11 @@ 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;
@ -20,7 +18,7 @@ import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;
public class I2PD extends Activity {
public class I2PDActivity extends Activity {
private static final String TAG = "i2pd";
private TextView textView;
@ -81,11 +79,11 @@ public class I2PD 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) {
@ -126,7 +124,8 @@ public class I2PD extends Activity {
private boolean mIsBound;
private void doBindService() {
private synchronized void doBindService() {
if(mIsBound)return;
// 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
@ -159,48 +158,39 @@ public class I2PD extends Activity {
int id = item.getItemId();
switch(id){
case R.id.action_quit:
quit();
case R.id.action_stop:
i2pdStop();
return true;
case R.id.action_graceful_quit:
gracefulQuit();
case R.id.action_graceful_stop:
i2pdGracefulStop();
return true;
}
return super.onOptionsItemSelected(item);
}
@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);
}
private void i2pdStop() {
try{
daemon.stopDaemon();
}catch (Throwable tr) {
Log.e(TAG, "", tr);
}
System.exit(0);
}
private Timer gracefulQuitTimer;
private final Object gracefulQuitTimerLock = new Object();
private void gracefulQuit() {
private synchronized void i2pdGracefulStop() {
if(daemon.getState()==DaemonSingleton.State.stopped){
Toast.makeText(this, R.string.already_stopped,
Toast.LENGTH_SHORT).show();
return;
}
if(getGracefulQuitTimer()!=null){
Toast.makeText(this, R.string.graceful_quit_is_already_in_progress,
Toast.makeText(this, R.string.graceful_stop_is_already_in_progress,
Toast.LENGTH_SHORT).show();
return;
}
Toast.makeText(this, R.string.graceful_quit_is_in_progress,
Toast.makeText(this, R.string.graceful_stop_is_in_progress,
Toast.LENGTH_SHORT).show();
new Thread(new Runnable(){
@ -216,12 +206,12 @@ public class I2PD extends Activity {
@Override
public void run() {
quit();
i2pdStop();
}
}, 10*60*1000/*milliseconds*/);
}else{
quit();
i2pdStop();
}
} catch(Throwable tr) {
Log.e(TAG,"",tr);