OnStart 和 App Constructor 有啥区别[重复]

Posted

技术标签:

【中文标题】OnStart 和 App Constructor 有啥区别[重复]【英文标题】: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/ 了解更多信息。

【问题讨论】:

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

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

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

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

【讨论】:

嘿,谢谢您的回答,这听起来合乎逻辑。但是,您能想到具体的区别吗?据我所知..两者都将在同一时间执行。 我的两分钱 - 我有点惊讶地发现 App 构造函数也在 Resume 上被调用,这打破了我的引导过程,因为我假设从应用程序创建到永远只有一个 App 实例死亡(例如,当 androidios 在睡眠期间终止应用程序时)。

以上是关于OnStart 和 App Constructor 有啥区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

android app中的服务为啥接收不到广播

uni-app运行到手机报错 Component constructors should be called while initialization. A constructor call has

如果在 Activity 更改时调用 onCreate 和 onStart 两者之间的区别在哪里?目的是啥?

Fragment.onstart 在 Activity.onstart 之前被调用

活动何时可见?在 onStart() 或 onResume() 之后?

重写onStart()函数