فهرست منبع

feat: 优化Initializer(Call) Provider初始化方式

DoggyZhang 1 ماه پیش
والد
کامیت
8e19390f89

+ 2 - 2
app/dependencies/releaseRuntimeClasspath.txt

@@ -230,7 +230,7 @@ com.wenext.android:frame-aab:6.0.3
 com.wenext.android:frame-apm:6.0.1
 com.wenext.android:frame-audio:6.0.0
 com.wenext.android:frame-base:6.0.4
-com.wenext.android:frame-bom:6.2.8
+com.wenext.android:frame-bom:6.2.9
 com.wenext.android:frame-coroutine:6.0.0
 com.wenext.android:frame-crash:6.0.1
 com.wenext.android:frame-data:6.0.0
@@ -255,7 +255,7 @@ com.wenext.android:frame-security:6.0.1
 com.wenext.android:frame-share:6.0.3
 com.wenext.android:frame-sound:6.0.4
 com.wenext.android:frame-spi:6.0.0
-com.wenext.android:frame-startup:6.0.1
+com.wenext.android:frame-startup:6.0.2
 com.wenext.android:frame-statistics:6.1.0
 com.wenext.android:frame-storage:6.0.7
 com.wenext.android:frame-util:6.0.7

+ 9 - 1
app/src/main/java/com/adealink/weparty/App.kt

@@ -5,7 +5,6 @@ import android.content.SharedPreferences
 import android.content.res.Configuration
 import android.os.SystemClock
 import com.adealink.frame.aab.AAB
-import com.adealink.frame.aab.util.getCompatString
 import com.adealink.frame.apm.initAPMService
 import com.adealink.frame.base.AppBase
 import com.adealink.frame.crash.installCrashProtector
@@ -76,6 +75,7 @@ import com.adealink.weparty.log.LogConfig
 import com.adealink.weparty.media.IMediaManager
 import com.adealink.weparty.media.MediaConfig
 import com.adealink.weparty.media.MediaManager
+import com.adealink.weparty.module.call.CallModule
 import com.adealink.weparty.module.im.IMModule
 import com.adealink.weparty.network.INetworkManager
 import com.adealink.weparty.network.NetworkConfig
@@ -176,6 +176,7 @@ class App : SplitCompatApplication(), ActivityLifecycleCallbacksExt {
 //            addAppStartTask(InitPayerMax())
 
             addAppStartTask(InitIM())
+            addAppStartTask(InitCall())
 
             //其他子任务(不卡主流程)
             addAppStartTask(InitOther())
@@ -368,6 +369,13 @@ class App : SplitCompatApplication(), ActivityLifecycleCallbacksExt {
         }
     }
 
+    inner class InitCall : SubWaitStartUpTask() {
+        override val isRunOnMainThread: Boolean = true
+        override fun run() {
+            CallModule.appOnCreateMainTask(this@App)
+        }
+    }
+
     inner class InitDebugKit : SubWaitStartUpTask() {
         override val isRunOnMainThread: Boolean = true
 

+ 1 - 1
gradle/libs.versions.toml

@@ -162,7 +162,7 @@ appleAppauth = "0.11.1"
 tiktok = "2.3.0"
 
 # frame
-frameBom = "6.2.8"
+frameBom = "6.2.9"
 
 framePush = "6.0.1"
 

+ 6 - 5
module/call/src/main/AndroidManifest.xml

@@ -53,11 +53,12 @@
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme" />
 
-        <provider
-            android:name="com.tencent.qcloud.tuikit.tuicallkit.manager.bridge.Initializer"
-            android:authorities="${applicationId}.Initializer"
-            android:enabled="true"
-            android:exported="false" />
+    <!--自己管理启动阶段-->
+<!--        <provider-->
+<!--            android:name="com.tencent.qcloud.tuikit.tuicallkit.manager.bridge.Initializer"-->
+<!--            android:authorities="${applicationId}.Initializer"-->
+<!--            android:enabled="true"-->
+<!--            android:exported="false" />-->
 
         <receiver
             android:name="com.tencent.qcloud.tuikit.tuicallkit.view.component.incomingbanner.IncomingCallReceiver"

+ 2 - 14
module/call/src/main/java/com/adealink/weparty/call/CallServiceImpl.kt

@@ -12,26 +12,14 @@ import com.adealink.weparty.call.datasource.local.CallLocalService
 import com.adealink.weparty.call.manager.callManager
 import com.adealink.weparty.commonui.BaseActivity
 import com.adealink.weparty.module.call.ICallService
+import com.tencent.qcloud.tuikit.tuicallkit.manager.bridge.CallServiceInitializer
 import io.trtc.tuikit.atomicxcore.api.CompletionHandler
 
 @RegisterService(ICallService::class)
 class CallServiceImpl : ICallService {
 
     override fun appOnCreateMainTask(application: Application) {
-//        ServiceInitializer.createInstance(application)
-//        WenextUICallKitImpl.createInstance(application)
-    }
-
-    override fun appOnCreateSubTask(application: Application) {
-//        callLoginManager.init(application)
-//        callPingManager.init(application)
-//        matchManager.init()
-    }
-
-    override fun activityOnCreateMainTask() {
-    }
-
-    override fun activityOnCreateSubTask() {
+        CallServiceInitializer.createInstance(application)
     }
 
 

+ 91 - 0
module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/manager/bridge/CallServiceInitializer.kt

@@ -0,0 +1,91 @@
+package com.tencent.qcloud.tuikit.tuicallkit.manager.bridge
+
+import android.app.Activity
+import android.content.Context
+import android.os.Bundle
+import com.adealink.frame.util.ActivityLifecycleCallbacksExt
+import com.adealink.frame.util.AppUtil
+import com.adealink.weparty.call.CallActivity
+import com.tencent.qcloud.tuicore.TUIConstants
+import com.tencent.qcloud.tuicore.TUICore
+import com.tencent.qcloud.tuicore.TUILogin
+import com.tencent.qcloud.tuikit.tuicallkit.TUICallKitImpl
+import com.tencent.qcloud.tuikit.tuicallkit.common.data.Constants
+
+/**
+ * `TUICallKit` uses `ContentProvider` to be registered with `TUICore`.
+ * (`TUICore` is the connection and communication class of each component)
+ */
+class CallServiceInitializer private constructor(context: Context) : ActivityLifecycleCallbacksExt {
+
+    companion object {
+        private var instance: CallServiceInitializer? = null
+        fun createInstance(context: Context): CallServiceInitializer {
+            if (null == instance) {
+                synchronized(CallServiceInitializer::class.java) {
+                    if (null == instance) {
+                        instance = CallServiceInitializer(context)
+                    }
+                }
+            }
+            return instance!!
+        }
+    }
+
+    init {
+        val callingService: CallKitService = CallKitService.sharedInstance(context)
+        TUICore.registerService(TUIConstants.TUICalling.SERVICE_NAME, callingService)
+
+        val audioRecordService = TUIAudioMessageRecordService(context)
+        TUICore.registerService(
+            TUIConstants.TUICalling.SERVICE_NAME_AUDIO_RECORD,
+            audioRecordService
+        )
+        TUICallKitImpl.createInstance(context)
+
+        AppUtil.registerActivityLifecycleCallbacks(this)
+    }
+
+    private var foregroundActivities = 0
+    private var isChangingConfiguration = false
+    override fun onActivityCreated(activity: Activity, bundle: Bundle?) {}
+    override fun onActivityStarted(activity: Activity) {
+        if (isMiPushActivity(activity)) {
+            return
+        }
+
+        foregroundActivities++
+        if (foregroundActivities == 1 && !isChangingConfiguration) {
+            //  The Call page exits the background and re-enters without repeatedly pulling up the page.
+            if (Constants.CALL_FRAMEWORK_NATIVE == Constants.framework &&
+                TUILogin.isUserLogined() && activity !is CallActivity
+            ) {
+                TUICallKitImpl.createInstance(AppUtil.appContext).queryOfflineCall()
+            }
+        }
+        isChangingConfiguration = false
+    }
+
+    override fun onActivityResumed(activity: Activity) {}
+    override fun onActivityPaused(activity: Activity) {}
+    override fun onActivityStopped(activity: Activity) {
+        if (isMiPushActivity(activity)) {
+            return
+        }
+        foregroundActivities--
+        isChangingConfiguration = activity.isChangingConfigurations
+    }
+
+    override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
+    override fun onActivityDestroyed(activity: Activity) {}
+
+    private fun isMiPushActivity(activity: Activity): Boolean {
+        try {
+            val clazzName = activity.componentName.className
+            return clazzName.contains("mipush.sdk")
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+        return false
+    }
+}

+ 0 - 73
module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/manager/bridge/Initializer.kt

@@ -1,73 +0,0 @@
-package com.tencent.qcloud.tuikit.tuicallkit.manager.bridge
-
-import android.app.Activity
-import android.app.Application
-import android.content.Context
-import android.os.Bundle
-import com.adealink.weparty.call.CallActivity
-import com.tencent.qcloud.tuicore.ServiceInitializer
-import com.tencent.qcloud.tuicore.TUIConstants
-import com.tencent.qcloud.tuicore.TUICore
-import com.tencent.qcloud.tuicore.TUILogin
-import com.tencent.qcloud.tuikit.tuicallkit.TUICallKitImpl
-import com.tencent.qcloud.tuikit.tuicallkit.common.data.Constants
-
-/**
- * `TUICallKit` uses `ContentProvider` to be registered with `TUICore`.
- * (`TUICore` is the connection and communication class of each component)
- */
-class Initializer : ServiceInitializer() {
-    override fun init(context: Context?) {
-        val callingService: CallKitService = CallKitService.sharedInstance(context!!)
-        TUICore.registerService(TUIConstants.TUICalling.SERVICE_NAME, callingService)
-
-        val audioRecordService = TUIAudioMessageRecordService(context)
-        TUICore.registerService(TUIConstants.TUICalling.SERVICE_NAME_AUDIO_RECORD, audioRecordService)
-        TUICallKitImpl.createInstance(context)
-        if (context is Application) {
-            context.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks {
-                private var foregroundActivities = 0
-                private var isChangingConfiguration = false
-                override fun onActivityCreated(activity: Activity, bundle: Bundle?) {}
-                override fun onActivityStarted(activity: Activity) {
-                    if (isMiPushActivity(activity)) {
-                        return
-                    }
-
-                    foregroundActivities++
-                    if (foregroundActivities == 1 && !isChangingConfiguration) {
-                        //  The Call page exits the background and re-enters without repeatedly pulling up the page.
-                        if (Constants.CALL_FRAMEWORK_NATIVE == Constants.framework &&
-                            TUILogin.isUserLogined() && activity !is CallActivity) {
-                            TUICallKitImpl.createInstance(context).queryOfflineCall()
-                        }
-                    }
-                    isChangingConfiguration = false
-                }
-
-                override fun onActivityResumed(activity: Activity) {}
-                override fun onActivityPaused(activity: Activity) {}
-                override fun onActivityStopped(activity: Activity) {
-                    if (isMiPushActivity(activity)) {
-                        return
-                    }
-                    foregroundActivities--
-                    isChangingConfiguration = activity.isChangingConfigurations
-                }
-
-                override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
-                override fun onActivityDestroyed(activity: Activity) {}
-            })
-        }
-    }
-
-    private fun isMiPushActivity(activity: Activity): Boolean {
-        try {
-            val clazzName = activity.componentName.className
-            return clazzName.contains("mipush.sdk")
-        } catch (e: Exception) {
-            e.printStackTrace()
-        }
-        return false
-    }
-}

+ 0 - 9
module/im/src/main/java/com/adealink/weparty/im/IMServiceImpl.kt

@@ -26,12 +26,6 @@ import com.tencent.qcloud.tuikit.tuiconversation.config.TUIConversationConfig
 @RegisterService(value = IIMService::class)
 class IMServiceImpl : IIMService {
 
-    override fun activityOnCreateMainTask() {
-    }
-
-    override fun activityOnCreateSubTask() {
-    }
-
     override fun appOnCreateMainTask(application: Application) {
         val myUserInfo = ProfileModule.getMyUserInfo()
         TUIConfig.setSelfFaceUrl(myUserInfo?.avatar)
@@ -70,9 +64,6 @@ class IMServiceImpl : IIMService {
         TIMAppService().init(application)
     }
 
-    override fun appOnCreateSubTask(application: Application) {
-    }
-
     override fun getService(): IMServiceImpl {
         return this
     }