Xamarin窗体应用程序()在启动时被调用两次

2ledvvac  于 2022-12-07  发布在  其他
关注(0)|答案(4)|浏览(164)

我的Xamarin Forms应用程序有一个问题。每次我启动android解决方案时,App()构造函数都会被调用两次。我通过将应用程序入口点设置为单例来修复这个问题。
但是每个视图构造函数也被调用两次,我不知道为什么?
这是一个错误吗?
我应该提到的是,我已经在代码后面写了所有的视图-如果它以某种方式相关-我使用genymotion模拟器。
应用程序中的代码没有花哨:

bool isInitialized = false;
    public App()
    {
        if (!isInitialized)
        {
            isInitialized = true;

        navigationPage = new NavigationPage(new LoginView());
        MainPage = NavigationPage;
        Observer = new NetworkObserver();
        Debug.WriteLine("Observer initialized");
       }
    }

Android解决方案中的代码-我没有在这里更改任何内容:

[Activity(Label = "XamarinClients", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
        public class MainActivity : 

global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            global::Xamarin.Forms.Forms.Init(this, bundle);
            LoadApplication(new App());
        }

    }

在测试IOS应用程序后,我可以看到我有同样的问题,它也调用了两次App()-以及页面构造函数。

x1c4d 1x指令集


指令集

x6h2sr28

x6h2sr281#

我遇到了完全相同的问题。App()从Xamarin Forms启动了两次。我希望这个问题在新的Xamarin Forms版本中得到修复。对我来说,这个问题始于2017年3月至2017年6月发布的Xamarin Forms版本。旧版本没有做到这一点,2016年5月至2016年7月发布的Xamarin Forms版本工作完美。没有发生代码更改。

iq3niunx

iq3niunx2#

我遇到了同样的问题,这导致了很多问题,因为它最终会两次命中我的API服务器。https://www.xamarinhelp.com/xamarin-forms-async-task-startup/,它声明将async Task放在OnStart方法中(显然,使OnStart异步)。

fd3cxomn

fd3cxomn3#

如果其他人犯了我刚才犯的同样愚蠢的错误,请检查以确保您没有同时在两个不同的平台上进行调试。
我将解决方案设置为包含多个启动项目,因此我同时部署到iOS和Android。我只关注我的Android设备,因此我甚至没有注意到我身边的iPhone上启动了应用程序。
这解释了为什么我的App构造函数被调用了两次。

jaxagkaj

jaxagkaj4#

你有没有<Content.BindingContext>在视图模型上添加?如果有,试着删除它。我也面临这个问题,我发现删除<Context.Binding>能够解决这个问题。

相关问题