Disconnect as soon as binder died
This commit is contained in:
@@ -196,8 +196,8 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Interface, Drawe
|
||||
override fun onServiceConnected(service: IShadowsocksService) = changeState(service.state)
|
||||
override fun onServiceDisconnected() = changeState(BaseService.IDLE)
|
||||
override fun binderDied() {
|
||||
super.binderDied()
|
||||
app.handler.post {
|
||||
connection.disconnect()
|
||||
Executable.killAll()
|
||||
connection.connect()
|
||||
}
|
||||
|
||||
@@ -48,7 +48,10 @@ class ShadowsocksConnection(private val instance: Interface) : ServiceConnection
|
||||
* Different from Android framework, this method will be called even when you call `detachService`.
|
||||
*/
|
||||
fun onServiceDisconnected() { }
|
||||
override fun binderDied() { }
|
||||
override fun binderDied() {
|
||||
connection.service = null
|
||||
connection.disconnect()
|
||||
}
|
||||
}
|
||||
|
||||
private var connectionActive = false
|
||||
@@ -109,6 +112,7 @@ class ShadowsocksConnection(private val instance: Interface) : ServiceConnection
|
||||
connectionActive = false
|
||||
if (instance.listenForDeath) binder?.unlinkToDeath(instance, 0)
|
||||
binder = null
|
||||
service?.stopListeningForBandwidth(instance.serviceCallback)
|
||||
service = null
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user