Commit 716d50bb authored by Mygod's avatar Mygod

Catch DeadObjectException in onServiceConnected

parent 734f2ed8
...@@ -28,6 +28,7 @@ import android.net.VpnService ...@@ -28,6 +28,7 @@ import android.net.VpnService
import android.nfc.NdefMessage import android.nfc.NdefMessage
import android.nfc.NfcAdapter import android.nfc.NfcAdapter
import android.os.Bundle import android.os.Bundle
import android.os.DeadObjectException
import android.util.Log import android.util.Log
import android.view.KeyCharacterMap import android.view.KeyCharacterMap
import android.view.KeyEvent import android.view.KeyEvent
...@@ -117,7 +118,11 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Interface, OnPre ...@@ -117,7 +118,11 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Interface, OnPre
} }
override val listenForDeath: Boolean get() = true override val listenForDeath: Boolean get() = true
override fun onServiceConnected(service: IShadowsocksService) = changeState(service.state) override fun onServiceConnected(service: IShadowsocksService) = changeState(try {
service.state
} catch (_: DeadObjectException) {
BaseService.IDLE
})
override fun onServiceDisconnected() = changeState(BaseService.IDLE) override fun onServiceDisconnected() = changeState(BaseService.IDLE)
override fun binderDied() { override fun binderDied() {
super.binderDied() super.binderDied()
......
...@@ -26,6 +26,7 @@ import android.content.ActivityNotFoundException ...@@ -26,6 +26,7 @@ import android.content.ActivityNotFoundException
import android.content.Intent import android.content.Intent
import android.net.VpnService import android.net.VpnService
import android.os.Bundle import android.os.Bundle
import android.os.DeadObjectException
import android.text.format.Formatter import android.text.format.Formatter
import android.util.Log import android.util.Log
import android.widget.Toast import android.widget.Toast
...@@ -135,7 +136,11 @@ class MainPreferenceFragment : LeanbackPreferenceFragment(), ShadowsocksConnecti ...@@ -135,7 +136,11 @@ class MainPreferenceFragment : LeanbackPreferenceFragment(), ShadowsocksConnecti
} }
override val listenForDeath: Boolean get() = true override val listenForDeath: Boolean get() = true
override fun onServiceConnected(service: IShadowsocksService) = changeState(service.state) override fun onServiceConnected(service: IShadowsocksService) = changeState(try {
service.state
} catch (_: DeadObjectException) {
BaseService.IDLE
})
override fun onServiceDisconnected() = changeState(BaseService.IDLE) override fun onServiceDisconnected() = changeState(BaseService.IDLE)
override fun binderDied() { override fun binderDied() {
super.binderDied() super.binderDied()
......
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