DemoAppLifecycles.java 6.16 KB
Newer Older
konghaorui committed
1 2 3 4 5
package com.ydl.component.base;


import android.app.Application;
import android.content.Context;
konghaorui committed
6
import android.content.Intent;
konghaorui committed
7 8 9
import android.os.Build;
import android.os.Process;
import android.support.annotation.RequiresApi;
konghaorui committed
10

严久程 committed
11
import com.facebook.stetho.Stetho;
konghaorui committed
12 13 14 15 16 17 18 19 20
import com.meituan.android.walle.WalleChannelReader;
import com.netease.nimlib.sdk.util.NIMUtil;
import com.tencent.bugly.crashreport.CrashReport;
import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure;
import com.umeng.socialize.PlatformConfig;
import com.umeng.socialize.UMShareAPI;
import com.ydl.component.BuildConfig;
import com.ydl.component.MainActivity;
konghaorui committed
21
import com.ydl.media.audio.PlayService;
konghaorui committed
22
import com.ydl.ydlcommon.base.config.YDLConstants;
23
import com.ydl.ydlcommon.base.delegate.IAppLifecycles;
konghaorui committed
24
import com.ydl.ydlcommon.utils.YdlBuryPointUtil;
严久程 committed
25
import com.yidianling.course.lifeCallback.CoursePlayLifecycle;
konghaorui committed
26
import com.yidianling.im.config.NimApplication;
konghaorui committed
27

konghaorui committed
28 29
import org.jetbrains.annotations.NotNull;

严久程 committed
30 31
import io.flutter.view.FlutterMain;

konghaorui committed
32 33 34 35 36
/**
 * Created by haorui on 2019-09-02.
 * Des:
 */
public class DemoAppLifecycles implements IAppLifecycles {
37

konghaorui committed
38 39 40 41 42
    @Override
    public void attachBaseContext(@NotNull Context base) {

    }

konghaorui committed
43
    @RequiresApi(api = Build.VERSION_CODES.ICE_CREAM_SANDWICH)
konghaorui committed
44 45
    @Override
    public void onCreate(@NotNull Application application) {
konghaorui committed
46 47 48 49 50 51 52
        //模块初始化
        moduleInit(application);
        if (NIMUtil.isMainProcess(application)) {
            //第三方SDK初始化
            initThirdServiceSDK(application);
            //Flutter 初始化需要在主线程中执行
            FlutterMain.startInitialization(application);
严久程 committed
53

konghaorui committed
54 55 56 57 58 59
            //        FlutterMain.ensureInitializationComplete(application, null);
            //
            //        FlutterEngine flutterEngine = new FlutterEngine(application);
            //        flutterEngine.getDartExecutor().executeDartEntrypoint(DartExecutor.DartEntrypoint.createDefault());
            //        YDLCommonPlugin plugin = new YDLCommonPlugin();
            //        flutterEngine.getLocalizationChannel().channel.setMethodCallHandler(plugin);
严久程 committed
60

konghaorui committed
61 62 63
            Intent intent = new Intent(application, PlayService.class);
            application.startService(intent);
            application.registerActivityLifecycleCallbacks(new CoursePlayLifecycle());
严久程 committed
64 65

            Stetho.initializeWithDefaults(application);
konghaorui committed
66
        }
konghaorui committed
67 68 69 70 71
    }

    @Override
    public void onTerminate(@NotNull Application application) {
    }
konghaorui committed
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90

    private void moduleInit(Application application) {
        NimApplication.getInstance().initIm(application, MainActivity.class);
    }

    private void initThirdServiceSDK(Application application) {
        new Thread() {
            @Override
            public void run() {
                super.run();
                //设置线程优先级,不与主线程抢资源
                Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);

                //子线程中初始化X5内核,防止ANR问题
                initX5();

                //数据埋点初始化--一定要放在主进程中
                YdlBuryPointUtil.init(application);
                if (DemoGlobalConfig.appEnv.equals(YDLConstants.ENV_PROD)){
91
//                    YDLavManager.Companion.getInstances().init(application, "3387e9b251f3491e9221a9877e8f7830");
konghaorui committed
92
                }else {
93
//                    YDLavManager.Companion.getInstances().init(application, "13b1536698f64905a1e7e5bb978ba821");
konghaorui committed
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
                }

                //bugly
                String packageName = application.getPackageName();
                String channel = WalleChannelReader.getChannel(application);
                if (channel == null || channel.equals("null")) {
                    channel = "test";
                }
                CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(application);
                strategy.setAppChannel(channel);
                String appkey = BuildConfig.DEBUG ? "630a3a5cea" : "3939e71afa";
                CrashReport.initCrashReport(application, appkey, BuildConfig.DEBUG, strategy);

                //umeng
                String umAppkey = null;
                if (packageName.endsWith("yidianling")) {
                    umAppkey = "56970affe0f55a9cda001e24";
                    channel = "android_" + channel;
                    initUM(umAppkey, channel,application);
                    PlatformConfig.setWeixin("wx57a9d930270498c7", "17c031f02500ded3457a80e69d8e5e45");
                }
                PlatformConfig.setQQZone("1105070461", "6BvkUnk6wXJekcgR");
                MobclickAgent.setScenarioType(application, MobclickAgent.EScenarioType.E_DUM_NORMAL);
                MobclickAgent.setCatchUncaughtExceptions(!BuildConfig.DEBUG);

                //开启友盟集成测试
                UMConfigure.setLogEnabled(BuildConfig.DEBUG);

                //安全检测
                //YDLAppProtector.init();

            }
        }.start();
    }



    private void initUM(String umAppKey, String channel, Application application) {
        /**
         * 初始化common库
         * 参数1:上下文,不能为空
         * 参数2:友盟 app key
         * 参数3:友盟 channel
         * 参数4:设备类型,UMConfigure.DEVICE_TYPE_PHONE为手机、UMConfigure.DEVICE_TYPE_BOX为盒子,默认为手机
         * 参数5:Push推送业务的secret
         */
        UMConfigure.init(application, umAppKey, channel, UMConfigure.DEVICE_TYPE_PHONE, null);
        UMShareAPI.init(application, umAppKey);
    }


    /**
     * 初始化X5内核
     */
    private void initX5() {
//        if (!QbSdk.isTbsCoreInited()) {//// preinit只需要调用一次,如果已经完成了初始化,那么就直接构造view
//            QbSdk.preInit(application, null);// 设置X5初始化完成的回调接口
//        }
//
//        QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
//
//            @Override
//            public void onViewInitFinished(boolean arg0) {
//                //初始化完成回调
//            }
//
//            @Override
//            public void onCoreInitFinished() {
//            }
//        };
//        QbSdk.initX5Environment(application, cb);
    }


徐健 committed
168
}