如何避免在 activity 之前已打开(Xamarin.Android)时执行 OnCreate 方法?
How to avoid OnCreate method execution when activity has been opened previously (Xamarin.Android)?
我有两个活动 FirstActivity
和 SecondActivity
。当我在 FirstActivty
时,我这样调用 SecondActivity
:
var secondActivity = new Intent(this, typeof(SecondActivity));
secondActivity.PutExtra("someExtra", someExtra);
StartActivity(secondActivity);
Finish();
在SecondActivity
中我调用了OnBackPressed
中的FirstActivity
方法:
public override void OnBackPressed()
{
StartActivity(typeof(FirstActivty));
Finish();
}
我查看了有关 Android(Java)
的问题的答案。答案是,为了避免在 activity 已经创建时在 FirstActivity
中执行 OnCreate
方法,我不必在打开后销毁 FirstActivity
SecondActivity
,我必须在 StartActivity(secondActivity);
行之后删除 Finish()
。我删除了它,但是当我从 SecondActivity
返回时 OnCreate
方法仍然被执行。此解决方案仅适用于 Android(Java)
吗?如果适用,Xamarin.Android
的解决方案是什么?
您可以像此代码一样在您的 FirstActivity
属性中添加 LaunchMode = Android.Content.PM.LaunchMode.SingleInstance
。
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true,LaunchMode = Android.Content.PM.LaunchMode.SingleInstance)]
public class MainActivity : AppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
}
这是运行 GIF。
如果不想执行Oncreate
方法中的代码,可以参考这个线程。
我有两个活动 FirstActivity
和 SecondActivity
。当我在 FirstActivty
时,我这样调用 SecondActivity
:
var secondActivity = new Intent(this, typeof(SecondActivity));
secondActivity.PutExtra("someExtra", someExtra);
StartActivity(secondActivity);
Finish();
在SecondActivity
中我调用了OnBackPressed
中的FirstActivity
方法:
public override void OnBackPressed()
{
StartActivity(typeof(FirstActivty));
Finish();
}
我查看了有关 Android(Java)
的问题的答案。答案是,为了避免在 activity 已经创建时在 FirstActivity
中执行 OnCreate
方法,我不必在打开后销毁 FirstActivity
SecondActivity
,我必须在 StartActivity(secondActivity);
行之后删除 Finish()
。我删除了它,但是当我从 SecondActivity
返回时 OnCreate
方法仍然被执行。此解决方案仅适用于 Android(Java)
吗?如果适用,Xamarin.Android
的解决方案是什么?
您可以像此代码一样在您的 FirstActivity
属性中添加 LaunchMode = Android.Content.PM.LaunchMode.SingleInstance
。
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true,LaunchMode = Android.Content.PM.LaunchMode.SingleInstance)]
public class MainActivity : AppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
}
这是运行 GIF。
如果不想执行Oncreate
方法中的代码,可以参考这个线程。