From 72eb711d98c4b03661ab9d3413b1d5c63e8792f3 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 22 Apr 2022 16:34:39 +0200 Subject: [PATCH] Trying not to start Core in Application, only Config --- .../java/org/linphone/LinphoneApplication.kt | 20 +++++++++++++------ .../linphone/activities/GenericActivity.kt | 2 +- .../contact/DummyAuthenticationService.kt | 2 -- .../org/linphone/contact/DummySyncService.kt | 3 --- .../java/org/linphone/core/CoreService.kt | 4 ++++ .../NotificationBroadcastReceiver.kt | 1 + 6 files changed, 20 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/linphone/LinphoneApplication.kt b/app/src/main/java/org/linphone/LinphoneApplication.kt index 7cb207dc7..b548d5da1 100644 --- a/app/src/main/java/org/linphone/LinphoneApplication.kt +++ b/app/src/main/java/org/linphone/LinphoneApplication.kt @@ -41,9 +41,8 @@ class LinphoneApplication : Application(), ImageLoaderFactory { @SuppressLint("StaticFieldLeak") lateinit var coreContext: CoreContext - fun ensureCoreExists(context: Context, pushReceived: Boolean = false) { - if (::coreContext.isInitialized && !coreContext.stopped) { - Log.d("[Application] Skipping Core creation (push received? $pushReceived)") + private fun createConfig(context: Context) { + if (::corePreferences.isInitialized) { return } @@ -70,8 +69,17 @@ class LinphoneApplication : Application(), ImageLoaderFactory { Factory.instance().loggingService.setLogLevel(LogLevel.Message) } - Log.i("[Application] Core context created ${if (pushReceived) "from push" else ""}") - coreContext = CoreContext(context, config) + Log.i("[Application] Core config & preferences created") + } + + fun ensureCoreExists(context: Context, pushReceived: Boolean = false) { + if (::coreContext.isInitialized && !coreContext.stopped) { + Log.d("[Application] Skipping Core creation (push received? $pushReceived)") + return + } + + Log.i("[Application] Core context is being created ${if (pushReceived) "from push" else ""}") + coreContext = CoreContext(context, corePreferences.config) coreContext.start() } } @@ -80,7 +88,7 @@ class LinphoneApplication : Application(), ImageLoaderFactory { super.onCreate() val appName = getString(R.string.app_name) android.util.Log.i("[$appName]", "Application is being created") - ensureCoreExists(applicationContext) + createConfig(applicationContext) Log.i("[Application] Created") } diff --git a/app/src/main/java/org/linphone/activities/GenericActivity.kt b/app/src/main/java/org/linphone/activities/GenericActivity.kt index f6c8a596e..4498c8696 100644 --- a/app/src/main/java/org/linphone/activities/GenericActivity.kt +++ b/app/src/main/java/org/linphone/activities/GenericActivity.kt @@ -34,7 +34,6 @@ import androidx.window.layout.WindowInfoTracker import androidx.window.layout.WindowLayoutInfo import java.util.* import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.corePreferences @@ -54,6 +53,7 @@ abstract class GenericActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + Log.i("[Generic Activity] Ensuring Core exists") ensureCoreExists(applicationContext) lifecycleScope.launch(Dispatchers.Main) { diff --git a/app/src/main/java/org/linphone/contact/DummyAuthenticationService.kt b/app/src/main/java/org/linphone/contact/DummyAuthenticationService.kt index 001568cab..3cc3cf4b0 100644 --- a/app/src/main/java/org/linphone/contact/DummyAuthenticationService.kt +++ b/app/src/main/java/org/linphone/contact/DummyAuthenticationService.kt @@ -28,7 +28,6 @@ import android.content.Context import android.content.Intent import android.os.Bundle import android.os.IBinder -import org.linphone.core.tools.Log // Below classes are required to be able to create our DummySyncService... internal class DummyAuthenticator(context: Context) : AbstractAccountAuthenticator(context) { @@ -89,7 +88,6 @@ class DummyAuthenticationService : Service() { override fun onCreate() { authenticator = DummyAuthenticator(this) - Log.i("[Dummy Auth Service] Authenticator created") } override fun onBind(intent: Intent): IBinder { diff --git a/app/src/main/java/org/linphone/contact/DummySyncService.kt b/app/src/main/java/org/linphone/contact/DummySyncService.kt index a040dafca..60cec9642 100644 --- a/app/src/main/java/org/linphone/contact/DummySyncService.kt +++ b/app/src/main/java/org/linphone/contact/DummySyncService.kt @@ -24,7 +24,6 @@ import android.app.Service import android.content.* import android.os.Bundle import android.os.IBinder -import org.linphone.core.tools.Log // Below classes are required to be able to use our own contact MIME type entry... class DummySyncAdapter(context: Context, autoInit: Boolean) : AbstractThreadedSyncAdapter(context, autoInit) { @@ -45,10 +44,8 @@ class DummySyncService : Service() { override fun onCreate() { synchronized(syncAdapterLock) { - Log.i("[Dummy Sync Adapter] Sync Service created") if (syncAdapter == null) { syncAdapter = DummySyncAdapter(applicationContext, true) - Log.i("[Dummy Sync Adapter] Sync Adapter created") } } } diff --git a/app/src/main/java/org/linphone/core/CoreService.kt b/app/src/main/java/org/linphone/core/CoreService.kt index 56411a98c..4bfa33eea 100644 --- a/app/src/main/java/org/linphone/core/CoreService.kt +++ b/app/src/main/java/org/linphone/core/CoreService.kt @@ -22,6 +22,7 @@ package org.linphone.core import android.content.Intent import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.corePreferences +import org.linphone.LinphoneApplication.Companion.ensureCoreExists import org.linphone.core.tools.Log import org.linphone.core.tools.service.CoreService @@ -29,6 +30,9 @@ class CoreService : CoreService() { override fun onCreate() { super.onCreate() + Log.i("[Service] Ensuring Core exists") + ensureCoreExists(applicationContext) + coreContext.notificationsManager.service = this Log.i("[Service] Created") } diff --git a/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt b/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt index 5215bdf2d..29a2ff318 100644 --- a/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt +++ b/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt @@ -32,6 +32,7 @@ import org.linphone.core.tools.Log class NotificationBroadcastReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val notificationId = intent.getIntExtra(NotificationsManager.INTENT_NOTIF_ID, 0) + Log.i("[Notification Broadcast Receiver] Got notification broadcast for ID [$notificationId]") if (intent.action == NotificationsManager.INTENT_REPLY_NOTIF_ACTION || intent.action == NotificationsManager.INTENT_MARK_AS_READ_ACTION) { handleChatIntent(context, intent, notificationId)