package com.team.zhuoke.application; import android.app.Application; import android.content.Context; import android.os.Process; import android.text.TextUtils; import android.util.Log; import com.facebook.drawee.backends.pipeline.Fresco; import com.github.moduth.blockcanary.BlockCanary; import com.squareup.leakcanary.LeakCanary; import com.team.zhuoke.api.NetWorkApi; import com.team.zhuoke.net.config.NetWorkConfiguration; import com.team.zhuoke.net.http.HttpUtils; import com.team.zhuoke.ui.pagestatemanager.PageManager; import com.tencent.bugly.crashreport.CrashReport; import com.tencent.smtt.sdk.QbSdk; import com.tencent.smtt.sdk.TbsListener; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; /** * Author: yolanda * <p> * CreateTime: 2016/12/7 0007 下午 2:11 * <p> * description: */ public class DYApplication extends Application { private static Context context; @Override public void onCreate() { super.onCreate(); context = getApplicationContext(); // Buy收集 String packageName = context.getPackageName(); String processName = getProcessName(Process.myPid()); CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(context); strategy.setUploadProcess(processName == null || processName.equals(packageName)); CrashReport.initCrashReport(context, "3d003498d9", false); // 图片加载 Fresco.initialize(context); // UI卡顿检测工具 BlockCanary.install(this, new AppBlockCanaryContext()).start(); //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。 //TbsDownloader.needDownload(getApplicationContext(), false); QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() { @Override public void onViewInitFinished(boolean arg0) { // TODO Auto-generated method stub Log.e("app", " onViewInitFinished is " + arg0); } @Override public void onCoreInitFinished() { // TODO Auto-generated method stub } }; QbSdk.setTbsListener(new TbsListener() { @Override public void onDownloadFinish(int i) { Log.d("app", "onDownloadFinish is " + i); } @Override public void onInstallFinish(int i) { Log.d("app", "onInstallFinish is " + i); } @Override public void onDownloadProgress(int i) { Log.d("app", "onDownloadProgress:" + i); } }); QbSdk.initX5Environment(getApplicationContext(), cb); // 网络库初始化 initOkHttpUtils(); PageManager.initInApp(context); // 内存泄漏检测 initLeakCanary(); } private void initLeakCanary() { if (LeakCanary.isInAnalyzerProcess(this)) { return; } LeakCanary.install(this); } private static String getProcessName(int pid) { BufferedReader reader = null; try { reader = new BufferedReader(new FileReader("/proc/" + pid + "/cmdline")); String processName = reader.readLine(); if (!TextUtils.isEmpty(processName)) { processName = processName.trim(); } return processName; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } private void initOkHttpUtils() { /** * 网络配置 */ NetWorkConfiguration configuration = new NetWorkConfiguration(this) .baseUrl(NetWorkApi.baseUrl) .isCache(true) .isDiskCache(true) .isMemoryCache(true); HttpUtils.setConFiguration(configuration); } public static Context getContext() { return context; } }