Einführung: Dieser Artikel verwendet das von Die Schritte zur Projekterstellung finden Sie auf der offiziellen Website. Die in diesem Artikel analysierte Wir wissen, dass das obige Projekt eine Android-Anwendung ist. Öffnen Sie die Quellcodedatei im Verzeichnis Der Startvorgang einer Android-Anwendung läuft wie folgt ab: Vor dem Start der ersten Hauptanwendungöffentliche Klasse MainApplication erweitert Application implementiert ReactApplication { private final ReactNativeHost mReactNativeHost = neuer ReactNativeHost(dieser) { @Überschreiben öffentliches Boolean getUseDeveloperSupport() { BuildConfig.DEBUG zurückgeben; } @Überschreiben geschützte Liste<ReactPackage> getPackages() { @SuppressWarnings("UnnötigeLokaleVariable") Liste<ReactPackage>-Pakete = neue PackageList(this).getPackages(); // Andere Operationen an Paketen geben Pakete zurück; } @Überschreiben geschützter String getJSMainModuleName() { gib "Index" zurück; } } @Überschreiben öffentliche ReactNativeHost getReactNativeHost() { gibt mReactNativeHost zurück; } @Überschreiben öffentliche void beiErstellen() { super.onCreate(); SoLoader.init(dieses, /* natives Exopaket */ false); initializeFlipper(dies, getReactNativeHost().getReactInstanceManager()); } 1. Erstellen Sie eine Instanz der Mitgliedsvariable
2. In onCreate:
Hier ist eine kurze Einführung in ReactNativeHost ReactInstanceManager Diese Klasse ist die Kernklasse, die hauptsächlich für die Verwaltung des JS-Ladens, die Aufrechterhaltung des Lebenszyklus, die Verwaltung der Interaktion zwischen JS und C++ usw. verantwortlich ist. Hauptaktivität Schauen Sie sich als nächstes öffentliche Klasse MainActivity erweitert ReactActivity { @Überschreiben geschützter String getMainComponentName() { returniere "meinProjekt"; } } Nur die Methode getMainComponentName wird in öffentliche abstrakte Klasse ReactActivity erweitert AppCompatActivity implementiert DefaultHardwareBackBtnHandler, PermissionAwareActivity { privates endgültiges ReactActivityDelegate mDelegate; @Überschreiben geschützt void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mDelegate.onCreate(savedInstanceState); } geschützt void onCreate(Bundle savedInstanceState) { Zeichenfolge mainComponentName = getMainComponentName(); mReactDelegate = neuer ReactDelegate( getPlainActivity(), getReactNativeHost(), mainComponentName, getLaunchOptions()) { @Überschreiben geschützte ReactRootView createRootView() { gibt ReactActivityDelegate.this.createRootView() zurück; } }; if (mMainComponentName != null) { loadApp(Hauptkomponentenname); } } Hier wird zuerst die ReactDelegate-Instanz erstellt. Schauen wir uns als nächstes geschützt void loadApp(String appKey) { mReactDelegate.loadApp(appKey); getPlainActivity().setContentView(mReactDelegate.getReactRootView()); } Von hier aus gehen wir zur öffentliche void loadApp(String appKey) { wenn (mReactRootView != null) { throw new IllegalStateException("App kann nicht geladen werden, solange die App bereits ausgeführt wird."); } : mReactRootView = createRootView(); mReactRootView.startReactApplication( getReactNativeHost().getReactInstanceManager(), appKey, mLaunchOptions); } Hier werden drei Dinge erledigt: RootView erstellen ( Stammansicht erstellenSehen wir uns zunächst an, was RootView ist. öffentliche Klasse ReactRootView erweitert FrameLayout implementiert RootView, ReactRoot { /* ... */} ReactRootView erbt von getReactInstanceManager geschützter ReactInstanceManager createReactInstanceManager() { ReactInstanceManagerBuilder-Builder = /* ... */ für (ReactPackage reactPackage : getPackages()) { : Erstellen Sie ein Paket mit einer bestimmten Anzahl von Paketen. } : String jsBundleFile = getJSBundleFile(); if (jsBundleFile != null) { builder.setJSBundleFile(jsBundleFile); } anders { builder.setBundleAssetName(Assertions.assertNotNull(getBundleAssetName())); } ReactInstanceManager reactInstanceManager = builder.build(); reactInstanceManager zurückgeben; } Folgendes ist passiert:
Starten Sie die ReactApplicationöffentliche void startReactApplication(/* */) { // ... versuchen { // ... mReactInstanceManager.createReactContextInBackground(); Endlich // ... } } Abschließend erfolgt die Ausführung in der Methode
Wir werden die detaillierte Analyse in einem anderen Artikel veröffentlichen: Analyse des React Native startReactApplication-Prozesses. Zusammenfassen Um diesen Artikel zusammenzufassen: Wir nehmen das von Die Hauptfunktion von Die Hauptfunktionen von
Dies ist das Ende dieses Artikels über die kurze Analyse des Startvorgangs von React Native. Weitere relevante Inhalte zum Start von React Native finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Analyse des Prinzips und der Erstellungsmethode der temporären MySQL-Tabelle
0. Vorbereitung: • Schließen Sie iTunes • Beenden...
Um das Problem „Eingeben != Absenden“ zu implement...
1. Entpacken Sie MySQL 5.7 2. Erstellen Sie eine ...
Docker nimmt viel Platz ein. Immer wenn wir Conta...
MySQL meldet einen Fehler beim Ausführen einer Ab...
Canvas war schon immer ein unverzichtbares Tag-El...
Super ausführliches Tutorial zur Installation und...
Inhaltsverzeichnis Überblick Dateideskriptoren Sy...
Inhaltsverzeichnis Die Ursache des Vorfalls Sorti...
1. Node-Server einrichten + Datenbankverbindung D...
Effektvorschau Ideen Scrollen Sie durch die aktue...
Inhaltsverzeichnis Vorwort: Systemanforderungen: ...
Inhaltsverzeichnis 1. Implementieren Sie die Komp...
Wir gehen davon aus, dass Sie ein linuxer sind, a...
ab-Befehlsprinzip Der Befehl ab von Apache simuli...