Reduce stopSelf and ACTION_SHUTDOWN_VM
It was called even in so many places and most of them is actaully
unnecessary. I cleaned up those function calls.
Bug: 397138554
Test: gracefull close / force close / resize after ttyd is ready /
resize before ttyd is ready
Change-Id: I26bbde84da0f529e1c5a851ece41effe6c3edad9
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.kt b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.kt
index 52afef4..ca1140a 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.kt
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.kt
@@ -78,6 +78,7 @@
private lateinit var terminalTabAdapter: TerminalTabAdapter
private val terminalInfo = CompletableFuture<TerminalInfo>()
private val terminalViewModel: TerminalViewModel by viewModels()
+ private var isVmRunning = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -263,13 +264,16 @@
executorService.shutdown()
getSystemService<AccessibilityManager>(AccessibilityManager::class.java)
.removeAccessibilityStateChangeListener(this)
- val intent = VmLauncherService.getIntentForShutdown(this, this)
- startService(intent)
+ if (isVmRunning) {
+ val intent = VmLauncherService.getIntentForShutdown(this, this)
+ startService(intent)
+ }
super.onDestroy()
}
override fun onVmStart() {
Log.i(TAG, "onVmStart()")
+ isVmRunning = true
}
override fun onTerminalAvailable(info: TerminalInfo) {
@@ -278,11 +282,13 @@
override fun onVmStop() {
Log.i(TAG, "onVmStop()")
+ isVmRunning = false
finish()
}
override fun onVmError() {
Log.i(TAG, "onVmError()")
+ isVmRunning = false
// TODO: error cause is too simple.
ErrorActivity.start(this, Exception("onVmError"))
}
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/VmLauncherService.kt b/android/TerminalApp/java/com/android/virtualization/terminal/VmLauncherService.kt
index 84168e5..17bc4df 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/VmLauncherService.kt
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/VmLauncherService.kt
@@ -465,7 +465,6 @@
private fun doShutdown(resultReceiver: ResultReceiver?) {
runner?.exitStatus?.thenAcceptAsync { success: Boolean ->
resultReceiver?.send(if (success) RESULT_STOP else RESULT_ERROR, null)
- stopSelf()
}
if (debianService != null && debianService!!.shutdownDebian()) {
// During shutdown, change the notification content to indicate that it's closing
@@ -494,7 +493,6 @@
} else {
// If there is no Debian service or it fails to shutdown, just stop the service.
runner?.vm?.stop()
- stopSelf()
}
}