Завершенная активность по-прежнему получает первое следующее касание на некоторых устройствах - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть 2 вида деятельности, давайте назовем их Main и Secondary.Теперь, когда я занимаюсь основной деятельностью и перехожу на дополнительную, все работает нормально.Но когда я завершаю Вторичное действие на ТОЛЬКО НЕКОТОРЫХ устройствах, завершенное Вторичное действие все еще получает первое прикосновение в любом месте приложения.После этого первого прикосновения активность, кажется, полностью исчезла.

Я попытался выйти из операции и с помощью global::Android.Support.V4.App.NavUtils.NavigateUpFromSameTask(this); (см. Код ниже) и Finish();.Оба случая приводят к вышеупомянутой проблеме.

Я открываю Вторичное действие в основном так (упрощенно, я использую блокировки для предотвращения нескольких действий):

    var intent = new Intent(Activity, typeof(SecondaryActivity));
    intent.PutExtras(extras);
    StartActivityForResult(intent, requestCode);

И я просто выхожу из него:

public override bool OnOptionsItemSelected(IMenuItem item)
{
    if (InputLock.IsLocked()) return true;

    if (item.ItemId == global::Android.Resource.Id.Home)
    {
        global::Android.Support.V4.App.NavUtils.NavigateUpFromSameTask(this);
        return true;
    }

    return base.OnOptionsItemSelected(item);
}

Я за исключением Android, чтобы фактически обработать это и немедленно закрыть активность на Finish(), но активность там как-то зависает, невидимая, но все же осязаемая.Кроме того, требуется некоторое время (секунды), прежде чем на самом деле вызывается OnDestroy() - вот где я все завершаю, так что, возможно, перемещение в OnPause() поможет.Но не должен ли Android просто «отключить» приостановленную активность в любом случае, так как новая уже возобновлена?

ОБНОВЛЕНИЕ:

Возможно, проблема связана с версией Android,Я тестировал его на устройствах с:

  • Android 4.2 (довольно медленное устройство) - здесь не проблема
  • Android 6.0 (среднее устройство) - не проблема
  • Android 9.0 (довольно быстрое устройство) - происходит здесь
  • эмулятор Android 8.0 - происходит здесь
  • эмулятор Android 6.0 - не проблема

На основании этого я подозреваючто-то вроде «OnCreate () занимает слишком много времени» не проблема, так как медленное устройство с древним Android работает нормально (медленно, но нормально).Так что, на мой взгляд, проблема не в производительности.Скорее, я подозреваю, что Android 8+ (возможно, 7+) является «причиной».Но почему?Что-то изменилось в жизненном цикле активности в этих версиях?

...