我有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版本有关。我在以下设备上进行了测试:
基于此,我怀疑像“ OnCreate()花费的时间太长”之类的问题不是问题,因为具有较旧Android的速度较慢的设备可以正常工作(速度较慢,但可以)。因此,我认为问题不是基于性能的。 相反,我怀疑Android 8+(也许是7+)是“原因”。但为什么?这些版本的活动生命周期有什么变化吗?