From 7fdf437ee700c35bf55a4b894d0e3a6f654c1acb Mon Sep 17 00:00:00 2001 From: Max Lv Date: Sun, 23 Feb 2014 14:51:06 +0800 Subject: [PATCH] fix a crash of auto startup --- project/Build.scala | 4 ++-- .../ShadowsocksRunnerActivity.scala | 21 +++++++++++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/project/Build.scala b/project/Build.scala index 652d8f80..174036c8 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -5,8 +5,8 @@ import sbtandroid._ import sbtandroid.AndroidPlugin._ object App { - val version = "2.0.8" - val versionCode = 59 + val version = "2.0.9" + val versionCode = 60 } object General { diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksRunnerActivity.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksRunnerActivity.scala index 8a80cb80..0d901516 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksRunnerActivity.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksRunnerActivity.scala @@ -53,14 +53,6 @@ class ShadowsocksRunnerActivity extends Activity { lazy val settings = PreferenceManager.getDefaultSharedPreferences(this) val handler = new Handler() - val receiver = new BroadcastReceiver() { - override def onReceive(context: Context, intent: Intent) { - if (intent.getAction == Intent.ACTION_USER_PRESENT) { - attachService() - } - } - } - val connection = new ServiceConnection { override def onServiceConnected(name: ComponentName, service: IBinder) { bgService = IShadowsocksService.Stub.asInterface(service) @@ -76,6 +68,7 @@ class ShadowsocksRunnerActivity extends Activity { // Variables var vpnEnabled = -1 var bgService: IShadowsocksService = null + var receiver:BroadcastReceiver = null def isVpnEnabled: Boolean = { if (vpnEnabled < 0) { @@ -127,6 +120,13 @@ class ShadowsocksRunnerActivity extends Activity { val locked = km.inKeyguardRestrictedInputMode if (locked) { val filter = new IntentFilter(Intent.ACTION_USER_PRESENT) + receiver = new BroadcastReceiver() { + override def onReceive(context: Context, intent: Intent) { + if (intent.getAction == Intent.ACTION_USER_PRESENT) { + attachService() + } + } + } registerReceiver(receiver, filter) } else { attachService() @@ -136,7 +136,10 @@ class ShadowsocksRunnerActivity extends Activity { override def onDestroy() { super.onDestroy() deattachService() - unregisterReceiver(receiver) + if (receiver != null) { + unregisterReceiver(receiver) + receiver = null; + } } override def onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {