1

我正在使用深度链接,launchMode="singleTask"。如果有我的活动实例,一切正常:只调用 onNewIntent。但是如果没有实例,首先调用onCreate,然后调用onNewIntent,再调用onCreate。这就是为什么,屏幕闪烁。问题是什么?我删除了所有代码,只记录了事件。但是观察到相同的行为。

<activity
            android:name="uz.avtobank.MainActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
            android:launchMode="singleTask"
            android:screenOrientation="nosensor"
            android:theme="@style/SplashActivityTheme"
            android:windowSoftInputMode="adjustResize|stateHidden">

        <nav-graph android:value="@navigation/nav_graph_main" />

</activity>
            
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setTheme(R.style.AppTheme)
        setContentView(R.layout.activity_main)

        val host = NavHostFragment.create(R.navigation.nav_graph_main)
        supportFragmentManager.beginTransaction()
            .replace(R.id.container, host)
            .setPrimaryNavigationFragment(host)
            .commit()

        logMessage("onCreate ${intent.action}")
    }

    @SuppressLint("DefaultLocale")
    override fun onNewIntent(intent: Intent?) {
        super.onNewIntent(intent)
        logMessage("onNewIntent ${intent.action}")

        handleIntent(intent)
    }
    
    private fun handleIntent(intent: Intent) {
        if (intent.action != Intent.ACTION_VIEW)
            return

        try {
            findNavController(R.id.container).handleDeepLink(intent)
        } catch (e: IllegalStateException) {
        } catch (e: IllegalArgumentException) {
        }

        setIntent(intent)
    }

日志上出现以下内容: 有实例:onNewIntent 没有实例:onCreate、onNewIntent、onCreate

即使我删除了 handleIntent 方法,也会发生同样的情况。

4

0 回答 0