Уведомление Android: показывает активность родителя раньше запланированного - PullRequest
0 голосов
/ 20 марта 2019

Мое приложение имеет MainActivity и DetailActivity.Я использую TaskStackBuilder, как предложено здесь , чтобы показать DetailActivity при нажатии на уведомление, а также создать стек, чтобы при нажатии пользователем кнопки назад приложение плавно отображало MainActivity.

    private fun buildPendingIntent(context: Context, uuid: String,
        notificationId: Int): PendingIntent? {
        // Create an Intent for the activity you want to start
        var resultIntent = Intent(context, DetailActivity::class.java)
        resultIntent.putExtra(DetailActivity.INTENT_KEY_UUID, uuid)

        return TaskStackBuilder.create(context).run {
            addNextIntentWithParentStack(resultIntent)
            getPendingIntent(notificationId, PendingIntent.FLAG_UPDATE_CURRENT)
        }
    }

это в манифесте

    <activity
        android:name=".view.common.DetailActivity"
        android:launchMode="singleTask"
        android:parentActivityName=".view.home.MainActivity"
        android:theme="@style/MyAppTheme.DetailView">
    </activity>

Проблема, с которой я столкнулся, заключается в том, что при нажатии на уведомление я вижу MainActivity в течение короткого периода времени, а затем показывает DetailActivity.Я хочу видеть только DetailActivity, и только кнопка "Назад" должна перевести пользователя в MainActivity (не должно иметь значения, является ли приложение приоритетным / фоновым / уничтоженным).

Если я удаляю parentActivityName в Manifest, то я вижуоднако непосредственно в DetailActivity, когда я нажимаю кнопку «назад», требуется некоторое время, чтобы отобразить MainActivity (когда приложение еще не находится в переднем / заднем плане).

DetailActivity onBackPressed ():

    override fun onBackPressed() {
        if (isTaskRoot) {
            val intent = Intent(this, MainActivity::class.java)
            startActivity(intent)
            finish()
        } else {
            super.onBackPressed()
        }
    }

Короче говоря, я хочу, чтобы DetailActivity отображалась непосредственно при нажатии на уведомление и при нажатии кнопки "Назад". MainActivity отображается без загрузки / задержки.

...