立即完成当前活动

问题描述 投票:0回答:1

现在,我有一个带有方法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的活动生命周期,但是我想知道有一种方法可以立即完成当前活动,而无需调用下一个代码?

android xamarin lifecycle
1个回答
1
投票

活动始终会贯穿第一个生命周期,即使您调用结束,例如onCreate --> onStart --> onResume。仅计划在onResume之后执行结束通话。如果您唯一的问题是阻止在onResume中执行某些代码,请在调用this.Finish()的位置定义一个标志,例如bool finishCalled = true;,然后再防止工具栏设置标题,只需将代码与if !(finishCalled)一起包装在该bool中]。

应该这样做。

© www.soinside.com 2019 - 2024. All rights reserved.