12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package com.reactnativenavigation;
-
- import android.app.Activity;
- import android.app.Application;
- import android.os.Bundle;
-
- import com.facebook.react.ReactApplication;
- import com.facebook.react.ReactNativeHost;
- import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
- import com.reactnativenavigation.controllers.ActivityLifecycleDelegate;
- import com.reactnativenavigation.react.DevPermissionRequestImpl;
- import com.reactnativenavigation.react.NavigationReactNativeHost;
-
- public abstract class NavigationApplication extends Application implements ReactApplication {
- public static NavigationApplication instance;
-
- public static class Config {
- public ReactNativeHost reactNativeHost;
- public ActivityLifecycleDelegate activityLifecycleDelegate;
- }
-
- private Config config;
-
- @Override
- public void onCreate() {
- super.onCreate();
- instance = this;
- config = createConfig();
-
- registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
- @Override
- public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
- getConfig().activityLifecycleDelegate.onActivityCreated(activity);
- }
-
- @Override
- public void onActivityStarted(Activity activity) {
-
- }
-
- @Override
- public void onActivityResumed(Activity activity) {
- getConfig().activityLifecycleDelegate.onActivityResumed(activity, (DefaultHardwareBackBtnHandler) activity);
- }
-
- @Override
- public void onActivityPaused(Activity activity) {
- getConfig().activityLifecycleDelegate.onActivityPaused(activity);
- }
-
- @Override
- public void onActivityStopped(Activity activity) {
-
- }
-
- @Override
- public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
-
- }
-
- @Override
- public void onActivityDestroyed(Activity activity) {
- getConfig().activityLifecycleDelegate.onActivityDestroyed(activity);
- }
- });
- }
-
- public final Config getConfig() {
- return config;
- }
-
- @Override
- public ReactNativeHost getReactNativeHost() {
- return getConfig().reactNativeHost;
- }
-
- public abstract boolean isDebug();
-
- /**
- * override this to inject your own configuration
- *
- * @return the Config
- */
- protected Config createConfig() {
- Config config = new Config();
- config.reactNativeHost = new NavigationReactNativeHost(this, isDebug());
- config.activityLifecycleDelegate = new ActivityLifecycleDelegate(config.reactNativeHost.getReactInstanceManager(), new DevPermissionRequestImpl());
- return config;
- }
- }
|