From 7211c75ee9c3414fa9176dc72eb72196244f6949 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Tue, 22 Jan 2019 09:04:36 +0100 Subject: [PATCH] Attempt at fixing more connection crashes --- .../util/service/BackendServiceConnection.kt | 22 +++++++++++++------ .../util/service/ServiceBoundActivity.kt | 4 +++- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt b/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt index c8675375f..2d375b908 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt @@ -23,7 +23,6 @@ import android.content.ComponentName import android.content.Context import android.content.Intent import android.content.ServiceConnection -import android.os.Build import android.os.IBinder import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.LifecycleOwner @@ -66,11 +65,18 @@ class BackendServiceConnection : ServiceConnection, DefaultLifecycleObserver { } } - fun start(intent: Intent = QuasselService.intent(context!!)) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - context?.startForegroundService(intent) - } else { - context?.startService(intent) + fun start(intent: Intent? = null): Boolean { + try { + context?.let { + it.startService( + intent + ?: QuasselService.intent(it) + ) + return true + } + return false + } catch (e: IllegalStateException) { + return false } } @@ -90,7 +96,9 @@ class BackendServiceConnection : ServiceConnection, DefaultLifecycleObserver { } } - override fun onCreate(owner: LifecycleOwner) = start() + override fun onCreate(owner: LifecycleOwner) { + start() + } override fun onStart(owner: LifecycleOwner) = bind() diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt index f27c5d3b1..a2fa92041 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt @@ -26,6 +26,7 @@ import android.content.res.Configuration import android.os.Build import android.os.Bundle import android.view.WindowManager +import android.widget.Toast import androidx.annotation.ColorRes import androidx.annotation.DrawableRes import de.kuschku.libquassel.session.Backend @@ -151,7 +152,8 @@ abstract class ServiceBoundActivity : if (!reconnect || !accountIdValid) { onSelectAccount() } else { - connection.start() + if (!connection.start()) + Toast.makeText(this, "Could not create QuasselService", Toast.LENGTH_SHORT).show() connection.bind() } } -- GitLab