MainApplication.java 4.27 KB
package com.metroapp;

import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.webkit.WebView;

import com.allenliu.versionchecklib.core.AllenChecker;
import com.allenliu.versionchecklib.core.VersionParams;
import com.brentvatne.react.ReactVideoPackage;
import com.elvishew.xlog.LogConfiguration;
import com.elvishew.xlog.XLog;
import com.elvishew.xlog.printer.Printer;
import com.elvishew.xlog.printer.file.FilePrinter;
import com.elvishew.xlog.printer.file.backup.NeverBackupStrategy;
import com.elvishew.xlog.printer.file.naming.DateFileNameGenerator;
import com.facebook.react.ReactApplication;
import com.lwansbrough.RCTCamera.RCTCameraPackage;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
import com.imagepicker.ImagePickerPackage;
import com.mehcode.reactnative.splashscreen.SplashScreenPackage;
import com.metroapp.constant.Constant;
import com.metroapp.rnpackage.BluetoothPackage;
import com.metroapp.rnpackage.UpdateVersionPackage;
import com.metroapp.utils.XNVersionService;
import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure;

import java.util.Arrays;
import java.util.List;

import static com.umeng.commonsdk.stateless.UMSLEnvelopeBuild.mContext;

public class MainApplication extends Application implements ReactApplication {

  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
    @Override
    public boolean getUseDeveloperSupport() {
      return BuildConfig.DEBUG;
    }

    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
            new RCTCameraPackage(),
              new SplashScreenPackage(),
            new ReactVideoPackage(),
            new ImagePickerPackage(),
              new BluetoothPackage(),
              new UpdateVersionPackage()
      );
    }
  };

  @Override
  public ReactNativeHost getReactNativeHost() {
    return mReactNativeHost;
  }

  private Context context;
  @Override
  public void onCreate() {
    super.onCreate();
    SoLoader.init(this, /* native exopackage */ false);
    context = this;
    //启动保活service
    Intent intent = new Intent(this, GrayService.class);
    startService(intent);

    if(BuildConfig.DEBUG)
    {
      WebView.setWebContentsDebuggingEnabled(true);
    }

    LogConfiguration config = new LogConfiguration.Builder()
            .tag("METRO")                                         // 指定 TAG,默认为 "X-LOG"
            .build();


    Printer filePrinter = new FilePrinter                      // 打印日志到文件的打印器
            .Builder(Environment.getExternalStorageDirectory()+ "/1111MetroLog")                              // 指定保存日志文件的路径
            .fileNameGenerator(new DateFileNameGenerator())        // 指定日志文件名生成器,默认为 ChangelessFileNameGenerator("log")
            .backupStrategy(new NeverBackupStrategy())            // 指定日志文件备份策略,默认为 FileSizeBackupStrategy(1024 * 1024)
                    .build();
    XLog.init(config,filePrinter);

    //友盟
    UMConfigure.init(this,UMConfigure.DEVICE_TYPE_PHONE, null);
    MobclickAgent.setScenarioType(this, MobclickAgent.EScenarioType.E_UM_NORMAL);
    //管理activity生命周期,用于友盟检测日活
    registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
      @Override
      public void onActivityCreated(Activity activity, Bundle bundle) {

      }

      @Override
      public void onActivityStarted(Activity activity) {

      }

      @Override
      public void onActivityResumed(Activity activity) {
        MobclickAgent.onResume(context);

      }

      @Override
      public void onActivityPaused(Activity activity) {
        MobclickAgent.onPause(context);

      }

      @Override
      public void onActivityStopped(Activity activity) {
      }

      @Override
      public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {

      }

      @Override
      public void onActivityDestroyed(Activity activity) {

      }
    });

  }

}