【问题标题】:What is the difference between OnStart and the App Constructor [duplicate]OnStart 和 App Constructor 有什么区别[重复]
【发布时间】:2015-05-13 08:27:36
【问题描述】:

Xamarin Forms 具有以下 App 类:

public class App : Application
{
        public App()
        {
            // The root page of your application
            MainPage = new ContentPage
            {
                Content = new StackLayout
                {
                    VerticalOptions = LayoutOptions.Center,
                    Children = {
                        new Label {
                            XAlign = TextAlignment.Center,
                            Text = "Welcome to Xamarin Forms!"
                        }
                    }
                }
            };
        }

        protected override void OnStart()
        {
            // Handle when your app starts
        }

        protected override void OnSleep()
        {
            // Handle when your app sleeps
        }

        protected override void OnResume()
        {
            // Handle when your app resumes
        }
}

问题: 在构造函数中运行的代码和在 OnStart 方法中编写的代码有什么区别。当您的应用程序启动时不是都运行吗?

请参阅http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/app-lifecycle/ 了解更多信息。

【问题讨论】:

  • 构造函数应该快速且不包含业务逻辑(但这是一种观点,所以我没有将其作为答案发布,也可能有技术原因,所以我不会投票结束作为“问题是基于意见的”)。
  • 这正是我的观点。是否存在技术差异,或者只是从构造函数调用方法的语法糖?

标签: c# xamarin portable-class-library xamarin.forms


【解决方案1】:

它们完全不同,但文档并不稀少。

构造函数与平台无关,并且用于创建对象(如果这听起来像“教你吸蛋”,请道歉)。

然而,OnStart() 方法映射到特定于平台的通知及其相关含义。这是每个不同操作系统启动通知系统的跨平台实现 - 这在平台之间当然会有所不同,但这种抽象允许您以相同的方式处理它。

【讨论】:

  • 嘿,谢谢您的回答,这听起来合乎逻辑。但是,您能想到具体的区别吗?据我所知..两者都将在同一时间执行。
  • 我的两分钱 - 我有点惊讶地发现 App 构造函数也在 Resume 上被调用,这打破了我的引导过程,因为我假设从应用程序创建到永远只有一个 App 实例死亡(例如,当 Android 或 iOS 在睡眠期间终止应用程序时)。
猜你喜欢
  • 2019-01-10
  • 2018-03-01
  • 1970-01-01
  • 2017-02-17
  • 2011-09-27
  • 2013-04-22
  • 2012-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多