package com.runt.open.mvvm; import android.app.Activity; import android.app.Application; import android.content.Context; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.bytedance.sdk.openadsdk.TTAdConfig; import com.bytedance.sdk.openadsdk.TTAdConstant; import com.bytedance.sdk.openadsdk.TTAdSdk; import com.runt.open.mvvm.listener.CrashHandler; import com.runt.open.mvvm.util.MyLog; import com.scwang.smart.refresh.footer.ClassicsFooter; import com.scwang.smart.refresh.header.ClassicsHeader; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.scwang.smart.refresh.layout.api.RefreshFooter; import com.scwang.smart.refresh.layout.api.RefreshHeader; import com.scwang.smart.refresh.layout.api.RefreshLayout; import com.scwang.smart.refresh.layout.listener.DefaultRefreshFooterCreator; import com.scwang.smart.refresh.layout.listener.DefaultRefreshHeaderCreator; import com.tencent.bugly.crashreport.CrashReport; import java.util.ArrayList; import java.util.List; /** * Created by Administrator on 2021/10/28 0028. */ public class MyApplication extends Application { final String TAG = "MyApplication"; List activities = new ArrayList<>(); private Activity currentActivity;//当前activity private boolean isInfront; //是否前台运行 private static MyApplication application; public static MyApplication getApplication() { return application; } public Activity getCurrentActivity() { return currentActivity; } @Override public void onCreate() { super.onCreate(); MyLog.i(TAG,"onCreate"); application = this; //CrashReport.initCrashReport(getApplicationContext(), "8d88679ae9", false);//注册bugly //设置全局的Header构建器 SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() { @Override public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) { //layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色 return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header,默认是 贝塞尔雷达Header } }); //设置全局的Footer构建器 SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() { @Override public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) { //指定为经典Footer,默认是 BallPulseFooter return new ClassicsFooter(context).setDrawableSize(20); } }); registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) { MyLog.d(TAG,"onActivityCreated "+activity.getClass().getSimpleName()); if(!activities.contains(activity)){ activities.add(activity); } } @Override public void onActivityStarted(@NonNull Activity activity) { MyLog.d(TAG,"onActivityStarted "+activity.getClass().getSimpleName()); currentActivity = activity; } @Override public void onActivityResumed(@NonNull Activity activity) { MyLog.d(TAG,"onActivityResumed "+activity.getClass().getSimpleName()); currentActivity = activity; isInfront = true; } @Override public void onActivityPaused(@NonNull Activity activity) { MyLog.d(TAG,"onActivityPaused "+activity.getClass().getSimpleName()); } @Override public void onActivityStopped(@NonNull Activity activity) { MyLog.d(TAG,"onActivityStopped "+activity.getClass().getSimpleName()); } @Override public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle bundle) { MyLog.d(TAG,"onActivitySaveInstanceState "+activity.getClass().getSimpleName()); isInfront = false; } @Override public void onActivityDestroyed(@NonNull Activity activity) { MyLog.d(TAG,"onActivityDestroyed "+activity.getClass().getSimpleName()); if(activities.contains(activity)){ activities.remove(activity); } } }); CrashReport.initCrashReport(getApplicationContext(), "8d88679ae9", false);//注册bugly TTAdConfig.Builder builder = new TTAdConfig.Builder() .appId("5106813") .useTextureView(true) //使用TextureView控件播放视频,默认为SurfaceView,当有SurfaceView冲突的场景,可以使用TextureView .appName(getString(R.string.app_name)) .titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK) .allowShowNotify(true) //是否允许sdk展示通知栏提示 .allowShowPageWhenScreenLock(true) //是否在锁屏场景支持展示广告落地页 .directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI) //允许直接下载的网络状态集合 .supportMultiProcess(true) //是否支持多进程,true支持 .asyncInit(true) ;//异步初始化sdk,开启可减少初始化耗时 //.httpStack(new MyOkStack3())//自定义网络库,demo中给出了okhttp3版本的样例,其余请自行开发或者咨询工作人员。 TTAdSdk.init(this, builder.build(), new TTAdSdk.InitCallback() { @Override public void success() { MyLog.i(TAG,"TTAdSdk success"); } @Override public void fail(int i, String s) { MyLog.e(TAG,"TTAdSdk fail"); } }); CrashHandler crashHandler = CrashHandler.getInstance(); crashHandler.init(getApplicationContext(), new CrashHandler.CrashListener() { @Override public void onCrash() { for(Activity activity : activities){ activity.finish(); } System.exit(0); } }); } /** * 退出程序 */ public void quitApp(){ for(Activity activity:activities){ activity.finish(); } System.exit(0); } public boolean isInfront(){ return isInfront; } }