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

refine onTaskRemoved

parent 91a069bc
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.github.shadowsocks"
android:versionCode="68"
android:versionName="2.2.0">
android:versionCode="69"
android:versionName="2.2.1">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
......
......@@ -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() {
......
......@@ -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() {
......
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