From 415a9f6847b2c0adf98f2c10902abbf91e166519 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Sun, 24 Aug 2014 12:23:38 +0800 Subject: [PATCH] refine onTaskRemoved --- src/main/AndroidManifest.xml | 4 +- .../shadowsocks/ShadowsocksNatService.scala | 34 ++++++-------- .../shadowsocks/ShadowsocksVpnService.scala | 45 ++++++++++--------- 3 files changed, 38 insertions(+), 45 deletions(-) diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 2a85dcae..cfcce211 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + android:versionCode="69" + android:versionName="2.2.1"> diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala index b6ddbc54..fb541639 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala @@ -220,12 +220,12 @@ class ShadowsocksNatService extends Service with BaseService { } def notifyForegroundAlert(title: String, info: String, rate: Int) { - val openIntent: Intent = new Intent(this, classOf[Shadowsocks]) - openIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) - val contentIntent: PendingIntent = PendingIntent.getActivity(this, 0, openIntent, 0) - val closeIntent: Intent = new Intent(Action.CLOSE) - val actionIntent: PendingIntent = PendingIntent.getBroadcast(this, 0, closeIntent, 0) - val builder: NotificationCompat.Builder = new NotificationCompat.Builder(this) + val openIntent = new Intent(this, classOf[Shadowsocks]) + openIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT) + val contentIntent = PendingIntent.getActivity(this, 0, openIntent, 0) + val closeIntent = new Intent(Action.CLOSE) + val actionIntent = PendingIntent.getBroadcast(this, 0, closeIntent, 0) + val builder = new NotificationCompat.Builder(this) val icon = getResources.getDrawable(R.drawable.ic_stat_shadowsocks) if (rate >= 0) { @@ -309,14 +309,6 @@ class ShadowsocksNatService extends Service with BaseService { } } - override def onStartCommand(intent: Intent, flags: Int, startId: Int): Int = { - Service.START_STICKY - } - - override def onTaskRemoved(intent: Intent) { - stopRunner() - } - def killProcesses() { Console.runRootCommand(Utils.getIptables + " -t nat -F OUTPUT") @@ -564,13 +556,6 @@ class ShadowsocksNatService extends Service with BaseService { timer = null } - // clean up context - stopForegroundCompat(1) - if (receiver != null) { - unregisterReceiver(receiver) - receiver = null - } - // reset NAT killProcesses() @@ -578,6 +563,13 @@ class ShadowsocksNatService extends Service with BaseService { if (callbackCount == 0) { stopSelf() } + + // clean up context + if (receiver != null) { + unregisterReceiver(receiver) + receiver = null + } + stopForegroundCompat(1) } override def stopBackgroundService() { diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala index 87105c0e..c239fbaf 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala @@ -118,8 +118,8 @@ class ShadowsocksVpnService extends VpnService with BaseService { def startVpn() { - val openIntent: Intent = new Intent(this, classOf[Shadowsocks]) - openIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) + val openIntent = new Intent(this, classOf[Shadowsocks]) + openIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT) val configIntent = PendingIntent.getActivity(this, 0, openIntent, 0) val builder = new Builder() @@ -221,10 +221,10 @@ class ShadowsocksVpnService extends VpnService with BaseService { } def notifyAlert(title: String, info: String) { - val openIntent: Intent = new Intent(this, classOf[Shadowsocks]) + val openIntent = new Intent(this, classOf[Shadowsocks]) openIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) - val contentIntent: PendingIntent = PendingIntent.getActivity(this, 0, openIntent, 0) - val builder: NotificationCompat.Builder = new NotificationCompat.Builder(this) + val contentIntent = PendingIntent.getActivity(this, 0, openIntent, 0) + val builder = new NotificationCompat.Builder(this) builder .setSmallIcon(R.drawable.ic_stat_shadowsocks) .setWhen(0) @@ -255,14 +255,6 @@ class ShadowsocksVpnService extends VpnService with BaseService { .asInstanceOf[NotificationManager] } - override def onStartCommand(intent: Intent, flags: Int, startId: Int): Int = { - Service.START_STICKY - } - - override def onTaskRemoved(intent: Intent) { - stopRunner() - } - override def onRevoke() { stopRunner() } @@ -363,12 +355,6 @@ class ShadowsocksVpnService extends VpnService with BaseService { .set(Fields.SESSION_CONTROL, "stop") .build()) - // clean up the context - if (receiver != null) { - unregisterReceiver(receiver) - receiver = null - } - // reset VPN killProcesses() @@ -378,13 +364,28 @@ class ShadowsocksVpnService extends VpnService with BaseService { conn = null } - // reset notifications - notificationManager.cancel(1) - // stop the service if no callback registered if (callbackCount == 0) { stopSelf() } + + // clean up the context + if (receiver != null) { + unregisterReceiver(receiver) + receiver = null + } + + // reset notifications + notificationManager.cancel(1) + } + + override def onStartCommand(intent: Intent, flags: Int, startId: Int): Int = + { + Service.START_STICKY + } + + override def onTaskRemoved(intent: Intent) { + stopRunner() } override def stopBackgroundService() {