You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose中Intent启动多个Activity问题排查

问题分析:点击启动LivestreamActivity时两个Activity同时启动的原因

我正在开发一款集成直播(Livestream)与视频通话(Video Calling)功能的App,已接入GetStream Android SDK并创建Application类初始化SDK客户端,在两个Activity中均引用该客户端实例来创建直播或视频通话。当前遇到的问题是:点击按钮通过Intent启动LivestreamActivity时,LivestreamActivity与VideoCallActivity会同时启动,二者使用同一用户Token,请问可能的原因是什么?


相关代码

StreamApplicationClass.kt

class StreamApplication:Application() {
    override fun onCreate() {
        super.onCreate()
        initializeSDK()
    }

    private fun initializeSDK() {
        val userId = "Kit_Fist"
        val userName = "Broadcaster"
        val userToken = "token"

        // Step 1 - Create a user.
        val user = User(
            id = userId, // predefined string
            name = userName, // Name and image are used in the UI
            role = "admin",
        )

        // Step 2 - Initialize StreamVideo. For a production app, we recommend adding the client to your Application class or DI module.

        val client = StreamVideoBuilder(
            context = this,
            apiKey = apikey,
            user = user,
            token = userToken,
        ).build()
    }
}

Channels.kt

FloatingActionButton(
            onClick = {
                val intent = Intent(context, LivestreamActivity::class.java)
                context.startActivity(intent)
            },
            shape = CircleShape,

        )

LivestreamActivity

class LivestreamActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val call = StreamVideo.instance().call("livestream", "starter1")
        lifecycleScope.launch {
            call.join(create = true)
        }
        setContent{

            VideoTheme{
                LiveHost(call=call)
            }
        }

    }
}

AndroidManifest.xml

<application
  android:name=".StreamApplication"
   ......
   .....
  <activity
            android:name=".MainActivity"
            android:exported="true"
            android:label="@string/app_name">
  </activity>

  <activity android:name=".screens.calls.VideoCallActivity" />
  <activity android:name=".screens.calls.LivestreamActivity" />
</application>

可能的原因排查方向

  • 检查LivestreamActivity的代码逻辑:确认onCreate或其他生命周期方法中,是否存在意外启动VideoCallActivity的代码,比如额外的startActivity调用、隐式Intent触发等;同时检查LiveHost组件内部是否包含跳转至VideoCallActivity的逻辑。
  • 检查AndroidManifest.xml配置:查看两个Activity是否设置了重复的intent-filter(比如相同的action、category),导致系统启动LivestreamActivity时,同时匹配到VideoCallActivity的启动规则。
  • 检查按钮点击事件:确认该FloatingActionButton是否被重复绑定点击事件,或者所在Composable组件因状态变化多次重组,导致startActivity被异常触发。
  • 排查SDK相关逻辑:虽然当前代码中没有直接触发VideoCallActivity的逻辑,但可以检查同一Token下,GetStream SDK是否存在内部触发页面跳转的机制,比如通话状态监听导致的自动跳转。

内容的提问来源于stack exchange,提问作者MACHARIAH Kuria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 18:00:13