OnCreate запускается дважды с onNewIntent - PullRequest
0 голосов
/ 31 января 2020

Я использую глубокую ссылку, 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...