完成活动仍然可以在某些设备上进行第一次下一次触摸

时间:2019-04-30 11:42:34

标签: c# android xamarin activity-lifecycle

我有2个活动,可以将它们称为“主要”和“次要”。现在,当我进行主要活动而转到次要活动时,一切正常。但是,当我退出次要活动时,仅在某些设备上,完成的次要活动仍会在应用程序中的任何位置收到第一次触摸。 第一次接触后,Activity似乎完全消失了。

我尝试通过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+)是“原因”。但为什么?这些版本的活动生命周期有什么变化吗?

0 个答案:

没有答案