Commit 415a9f68 authored by Max Lv's avatar Max Lv

refine onTaskRemoved

parent 91a069bc
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.github.shadowsocks" package="com.github.shadowsocks"
android:versionCode="68" android:versionCode="69"
android:versionName="2.2.0"> android:versionName="2.2.1">
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
......
...@@ -220,12 +220,12 @@ class ShadowsocksNatService extends Service with BaseService { ...@@ -220,12 +220,12 @@ class ShadowsocksNatService extends Service with BaseService {
} }
def notifyForegroundAlert(title: String, info: String, rate: Int) { def notifyForegroundAlert(title: String, info: String, rate: Int) {
val openIntent: Intent = new Intent(this, classOf[Shadowsocks]) val openIntent = new Intent(this, classOf[Shadowsocks])
openIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) openIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
val contentIntent: PendingIntent = PendingIntent.getActivity(this, 0, openIntent, 0) val contentIntent = PendingIntent.getActivity(this, 0, openIntent, 0)
val closeIntent: Intent = new Intent(Action.CLOSE) val closeIntent = new Intent(Action.CLOSE)
val actionIntent: PendingIntent = PendingIntent.getBroadcast(this, 0, closeIntent, 0) val actionIntent = PendingIntent.getBroadcast(this, 0, closeIntent, 0)
val builder: NotificationCompat.Builder = new NotificationCompat.Builder(this) val builder = new NotificationCompat.Builder(this)
val icon = getResources.getDrawable(R.drawable.ic_stat_shadowsocks) val icon = getResources.getDrawable(R.drawable.ic_stat_shadowsocks)
if (rate >= 0) { if (rate >= 0) {
...@@ -309,14 +309,6 @@ class ShadowsocksNatService extends Service with BaseService { ...@@ -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() { def killProcesses() {
Console.runRootCommand(Utils.getIptables + " -t nat -F OUTPUT") Console.runRootCommand(Utils.getIptables + " -t nat -F OUTPUT")
...@@ -564,13 +556,6 @@ class ShadowsocksNatService extends Service with BaseService { ...@@ -564,13 +556,6 @@ class ShadowsocksNatService extends Service with BaseService {
timer = null timer = null
} }
// clean up context
stopForegroundCompat(1)
if (receiver != null) {
unregisterReceiver(receiver)
receiver = null
}
// reset NAT // reset NAT
killProcesses() killProcesses()
...@@ -578,6 +563,13 @@ class ShadowsocksNatService extends Service with BaseService { ...@@ -578,6 +563,13 @@ class ShadowsocksNatService extends Service with BaseService {
if (callbackCount == 0) { if (callbackCount == 0) {
stopSelf() stopSelf()
} }
// clean up context
if (receiver != null) {
unregisterReceiver(receiver)
receiver = null
}
stopForegroundCompat(1)
} }
override def stopBackgroundService() { override def stopBackgroundService() {
......
...@@ -118,8 +118,8 @@ class ShadowsocksVpnService extends VpnService with BaseService { ...@@ -118,8 +118,8 @@ class ShadowsocksVpnService extends VpnService with BaseService {
def startVpn() { def startVpn() {
val openIntent: Intent = new Intent(this, classOf[Shadowsocks]) val openIntent = new Intent(this, classOf[Shadowsocks])
openIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) openIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
val configIntent = PendingIntent.getActivity(this, 0, openIntent, 0) val configIntent = PendingIntent.getActivity(this, 0, openIntent, 0)
val builder = new Builder() val builder = new Builder()
...@@ -221,10 +221,10 @@ class ShadowsocksVpnService extends VpnService with BaseService { ...@@ -221,10 +221,10 @@ class ShadowsocksVpnService extends VpnService with BaseService {
} }
def notifyAlert(title: String, info: String) { 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) openIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
val contentIntent: PendingIntent = PendingIntent.getActivity(this, 0, openIntent, 0) val contentIntent = PendingIntent.getActivity(this, 0, openIntent, 0)
val builder: NotificationCompat.Builder = new NotificationCompat.Builder(this) val builder = new NotificationCompat.Builder(this)
builder builder
.setSmallIcon(R.drawable.ic_stat_shadowsocks) .setSmallIcon(R.drawable.ic_stat_shadowsocks)
.setWhen(0) .setWhen(0)
...@@ -255,14 +255,6 @@ class ShadowsocksVpnService extends VpnService with BaseService { ...@@ -255,14 +255,6 @@ class ShadowsocksVpnService extends VpnService with BaseService {
.asInstanceOf[NotificationManager] .asInstanceOf[NotificationManager]
} }
override def onStartCommand(intent: Intent, flags: Int, startId: Int): Int = {
Service.START_STICKY
}
override def onTaskRemoved(intent: Intent) {
stopRunner()
}
override def onRevoke() { override def onRevoke() {
stopRunner() stopRunner()
} }
...@@ -363,12 +355,6 @@ class ShadowsocksVpnService extends VpnService with BaseService { ...@@ -363,12 +355,6 @@ class ShadowsocksVpnService extends VpnService with BaseService {
.set(Fields.SESSION_CONTROL, "stop") .set(Fields.SESSION_CONTROL, "stop")
.build()) .build())
// clean up the context
if (receiver != null) {
unregisterReceiver(receiver)
receiver = null
}
// reset VPN // reset VPN
killProcesses() killProcesses()
...@@ -378,13 +364,28 @@ class ShadowsocksVpnService extends VpnService with BaseService { ...@@ -378,13 +364,28 @@ class ShadowsocksVpnService extends VpnService with BaseService {
conn = null conn = null
} }
// reset notifications
notificationManager.cancel(1)
// stop the service if no callback registered // stop the service if no callback registered
if (callbackCount == 0) { if (callbackCount == 0) {
stopSelf() 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() { override def stopBackgroundService() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment