diff --git a/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala index 71f793ce..1904b1b8 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala @@ -174,11 +174,12 @@ class ShadowVpnService extends VpnService { return } - settings.edit().putBoolean("isRunning", true).commit() + settings.edit().putBoolean(Key.isRunning, true).commit() changeState(State.CONNECTING) config = Extra.get(intent) + Extra.save(settings, config) new Thread(new Runnable { def run() { @@ -376,7 +377,7 @@ class ShadowVpnService extends VpnService { def destroy() { changeState(State.STOPPED) - settings.edit.putBoolean("isRunning", false).commit + settings.edit.putBoolean(Key.isRunning, false).commit EasyTracker.getTracker.sendEvent(TAG, "stop", getVersionName, 0L) if (receiver != null) { unregisterReceiver(receiver) diff --git a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala index 06232ae8..38394de1 100644 --- a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala +++ b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala @@ -211,18 +211,16 @@ class Shadowsocks private val handler: Handler = new Handler { override def handleMessage(msg: Message) { - val ed: SharedPreferences.Editor = settings.edit msg.what match { case MSG_CRASH_RECOVER => Crouton.makeText(Shadowsocks.this, R.string.crash_alert, Style.ALERT).show() - ed.putBoolean("isRunning", false) + settings.edit().putBoolean(Key.isRunning, false).apply() case MSG_INITIAL_FINISH => if (progressDialog != null) { progressDialog.dismiss() progressDialog = null } } - ed.commit super.handleMessage(msg) } } @@ -380,9 +378,7 @@ class Shadowsocks } } if (!settings.getBoolean(versionName, false)) { - val edit: SharedPreferences.Editor = settings.edit - edit.putBoolean(versionName, true) - edit.commit + settings.edit.putBoolean(versionName, true).apply() reset() } handler.sendEmptyMessage(MSG_INITIAL_FINISH) diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksService.scala index 2eeb29e0..80da9edf 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksService.scala @@ -127,18 +127,16 @@ class ShadowsocksService extends Service { val handler: Handler = new Handler { override def handleMessage(msg: Message) { - val ed: SharedPreferences.Editor = settings.edit msg.what match { case MSG_CONNECT_SUCCESS => changeState(State.CONNECTED) - ed.putBoolean("isRunning", true) + settings.edit().putBoolean(Key.isRunning, true).apply() case MSG_CONNECT_FAIL => changeState(State.STOPPED) case MSG_STOP_SELF => stopSelf() case _ => } - ed.commit super.handleMessage(msg) } } @@ -215,6 +213,7 @@ class ShadowsocksService extends Service { changeState(State.CONNECTING) config = Extra.get(intent) + Extra.save(settings, config) new Thread(new Runnable { def run() { @@ -395,9 +394,7 @@ class ShadowsocksService extends Service { killProcesses() } }.start() - val ed: SharedPreferences.Editor = settings.edit - ed.putBoolean("isRunning", false) - ed.commit + settings.edit.putBoolean(Key.isRunning, false).apply() if (receiver != null) { unregisterReceiver(receiver) receiver = null diff --git a/src/main/scala/com/github/shadowsocks/Utils.scala b/src/main/scala/com/github/shadowsocks/Utils.scala index 0879a26c..bc38fe67 100644 --- a/src/main/scala/com/github/shadowsocks/Utils.scala +++ b/src/main/scala/com/github/shadowsocks/Utils.scala @@ -53,6 +53,8 @@ import android.graphics.{Canvas, Bitmap} import android.app.ActivityManager object Key { + val isRunning = "isRunning" + val isGlobalProxy = "isGlobalProxy" val isGFWList = "isGFWList" val isBypassApps = "isBypassApps" @@ -96,6 +98,24 @@ object Extra { val STATE = "state" val MESSAGE = "message" + def save(settings: SharedPreferences, config: Config) { + val edit = settings.edit() + + edit.putBoolean(Key.isGlobalProxy, config.isGlobalProxy) + edit.putBoolean(Key.isGFWList, config.isGFWList) + edit.putBoolean(Key.isBypassApps, config.isBypassApps) + edit.putBoolean(Key.isDNSProxy, config.isDNSProxy) + edit.putBoolean(Key.isHTTPProxy, config.isHTTPProxy) + + edit.putString(Key.proxy, config.proxy) + edit.putString(Key.sitekey, config.sitekey) + edit.putString(Key.encMethod, config.encMethod) + edit.putString(Key.remotePort, config.remotePort.toString) + edit.putString(Key.localPort, config.localPort.toString) + + edit.apply() + } + def get(intent: Intent): Config = { val isGlobalProxy = intent.getBooleanExtra(Key.isGlobalProxy, false) val isGFWList = intent.getBooleanExtra(Key.isGFWList, false)