现在,我有一个带有方法PrepareData()的活动,该活动用于准备当前活动所需的每个数据,在设置所有内容之前,此操作在OnCreate中调用。我调用此方法,当发现一些问题时,我想完成当前活动。
所以这是我的代码的片段:
private void PrepareData()
{
try
{
//some code to prepare data here
}
catch(Exception ex)
{
Intent _startNewActivity = new Intent(this, ActivityB);
this.StartActivity(_startNewActivity);
this.Finish();
}
}
和这样的OnCreate
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
SetContentView(Resource.Layout.ActivityA);
PrepareData()
toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
if (toolbar != null)
{
SetSupportActionBar(toolbar);
SupportActionBar.Title = "Activity A";
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
}
}
现在,当应用程序在PrepareData上发现错误时,调用了intent,并且还调用了this.Finish(),但是由于某种原因,应用程序无法立即完成活动A,它仍然设置了工具栏,还调用了onResume。
我知道在onResume之后总是会调用onStop的活动生命周期,但是我想知道有一种方法可以立即完成当前活动,而无需调用下一个代码?
活动始终会贯穿第一个生命周期,即使您调用结束,例如onCreate --> onStart --> onResume
。仅计划在onResume
之后执行结束通话。如果您唯一的问题是阻止在onResume中执行某些代码,请在调用this.Finish()
的位置定义一个标志,例如bool finishCalled = true;
,然后再防止工具栏设置标题,只需将代码与if !(finishCalled)
一起包装在该bool中]。
应该这样做。