Fix startup crash: listener methods collided with Activity lifecycle
ControlServer.Listener declared onPause()/onResume(); implementing them in MainActivity overrode Activity.onPause/onResume without super calls, so the first resume died with SuperNotCalledException. Renamed to onPauseCast/ onResumeCast (matching onStopCast). Also drop R8 optimize variant. Verified on a Sony Bravia (Android TV 14). Version 0.1.1. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -11,8 +11,8 @@ android {
|
|||||||
applicationId = "dev.castarr.tv"
|
applicationId = "dev.castarr.tv"
|
||||||
minSdk = 26
|
minSdk = 26
|
||||||
targetSdk = 35
|
targetSdk = 35
|
||||||
versionCode = 1
|
versionCode = 2
|
||||||
versionName = "0.1.0"
|
versionName = "0.1.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Release signing from environment (see ~/.keys/castarr-release.env on the
|
// Release signing from environment (see ~/.keys/castarr-release.env on the
|
||||||
@@ -32,7 +32,7 @@ android {
|
|||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
isMinifyEnabled = true
|
isMinifyEnabled = true
|
||||||
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
|
||||||
if (storeFileEnv != null) {
|
if (storeFileEnv != null) {
|
||||||
signingConfig = signingConfigs.getByName("release")
|
signingConfig = signingConfigs.getByName("release")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -153,9 +153,9 @@ class MainActivity : Activity(), ControlServer.Listener {
|
|||||||
|
|
||||||
override fun onTogglePlay() = playerController.toggle()
|
override fun onTogglePlay() = playerController.toggle()
|
||||||
|
|
||||||
override fun onPause() = playerController.pause()
|
override fun onPauseCast() = playerController.pause()
|
||||||
|
|
||||||
override fun onResume() = playerController.resume()
|
override fun onResumeCast() = playerController.resume()
|
||||||
|
|
||||||
override fun onStopCast() = playerController.stop()
|
override fun onStopCast() = playerController.stop()
|
||||||
|
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ class ControlServer(
|
|||||||
interface Listener {
|
interface Listener {
|
||||||
fun onPlay(url: String, name: String, group: String)
|
fun onPlay(url: String, name: String, group: String)
|
||||||
fun onTogglePlay()
|
fun onTogglePlay()
|
||||||
fun onPause()
|
fun onPauseCast()
|
||||||
fun onResume()
|
fun onResumeCast()
|
||||||
fun onStopCast()
|
fun onStopCast()
|
||||||
fun onSeek(deltaSeconds: Long)
|
fun onSeek(deltaSeconds: Long)
|
||||||
fun onVolume(value: Float)
|
fun onVolume(value: Float)
|
||||||
@@ -176,8 +176,8 @@ class ControlServer(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
"toggle" -> post { listener.onTogglePlay() }
|
"toggle" -> post { listener.onTogglePlay() }
|
||||||
"pause" -> post { listener.onPause() }
|
"pause" -> post { listener.onPauseCast() }
|
||||||
"resume" -> post { listener.onResume() }
|
"resume" -> post { listener.onResumeCast() }
|
||||||
"stop" -> post { listener.onStopCast() }
|
"stop" -> post { listener.onStopCast() }
|
||||||
"seek" -> post { listener.onSeek(msg.optLong("delta")) }
|
"seek" -> post { listener.onSeek(msg.optLong("delta")) }
|
||||||
"volume" -> post { listener.onVolume(msg.optDouble("value", 1.0).toFloat().coerceIn(0f, 1f)) }
|
"volume" -> post { listener.onVolume(msg.optDouble("value", 1.0).toFloat().coerceIn(0f, 1f)) }
|
||||||
|
|||||||
Reference in New Issue
Block a user