2015-03-11 12 views
6

Xamarin Forms ist, hat die folgende App Klasse:Was ist der Unterschied zwischen OnStart und dem App Constructor

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 
     } 
} 

FRAGE: Was ist der Unterschied zwischen dem Code, der im Konstruktor läuft und der Code in der schriftlichen OnStart-Methode. Werden beide nicht ausgeführt, wenn Ihre Anwendung gestartet wird?

siehe http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/app-lifecycle/ für weitere Informationen.

+0

Konstruktoren sollten schnell sein und keine Geschäftslogik enthalten (Aber das ist eine Meinung, also schreibe ich sie nicht als Antwort, da kann es auch einen technischen Grund geben, also stimme ich nicht als "Frage basiert auf Meinung" ab). –

+0

Das ist genau mein Punkt. Gibt es einen technischen Unterschied oder ist es nur syntaktischer Zucker, um eine Methode vom Konstruktor aufzurufen? – Yoeri

Antwort

3

Sie sind völlig unterschiedlich, aber die Dokumentation ist weniger als spärlich.

Konstruktoren sind Plattform-Agnostiker und zum Zweck der Schaffung des Objekts (Entschuldigung, wenn dies klingt wie "Lehre Ihnen, Eier zu saugen").

Die OnStart() -Methode ist jedoch der plattformspezifischen Benachrichtigung und ihrer relevanten Bedeutung zugeordnet. Dies ist die plattformübergreifende Implementierung jedes Startup-Benachrichtigungssystems für verschiedene Betriebssysteme - dies wird natürlich zwischen den Plattformen unterschiedlich sein, aber diese Abstraktion ermöglicht es Ihnen, auf identische Weise damit umzugehen.

+0

Hey danke für deine Antwort, es klingt logisch. Können Sie sich jedoch einen konkreten Unterschied vorstellen? Soweit ich das beurteilen kann, werden beide ungefähr am selben Punkt ausgeführt. – Yoeri

+0

Meine zwei Cents - Ich war etwas überrascht herauszufinden, dass App-Konstruktor auch auf Resume aufgerufen wird, was meinen Bootstrapping-Prozess unterbricht, weil ich davon ausgegangen bin, dass es immer nur eine einzige App-Instanz von der App-Erstellung bis zum Tod geben wird (zB bei Android oder iOS) tötet die App während des Schlafes). – JustAMartin

Verwandte Themen