add:新增全局异常捕获类,暂未启用,有调试需要时可以在AppContext调用

fix:修复周榜、观众来回切换在网络慢的情况下会闪退的问题
fix:优化观众列表切换内容在网络慢的情况下有数据残留的问题
update:根据需求恢复在线守护列表到观众列表中
update:根据需求点击守护icon直接到守护列表
This commit is contained in:
zlzw 2022-08-25 15:52:20 +08:00
parent ac53f7b219
commit 1028e39555
3 changed files with 135 additions and 0 deletions

View File

@ -101,6 +101,8 @@ public class AppContext extends CommonAppContext {
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
//注册全局异常捕获
//registerError();
sInstance = this; sInstance = this;
L.setDeBug(BuildConfig.DEBUG); L.setDeBug(BuildConfig.DEBUG);
AppEventsLogger.activateApp(this); AppEventsLogger.activateApp(this);
@ -238,4 +240,21 @@ public class AppContext extends CommonAppContext {
RongcloudIMManager.removeRongcloudIMOnReceiveMessageListener(); RongcloudIMManager.removeRongcloudIMOnReceiveMessageListener();
super.onTerminate(); super.onTerminate();
} }
/**
* 注册全局异常捕获有需要时可以在onCreate调用
*/
private void registerError(){
NeverCrashUtils.getInstance()
.setDebugMode(BuildConfig.DEBUG)
.setMainCrashHandler((t, e) -> {
Log.e("ApplicationError", "主线程异常");//此处log只是展示当debug为true时主类内部log会打印异常信息
e.printStackTrace();
})
.setUncaughtCrashHandler((t, e) -> {
Log.e("ApplicationError", "子线程异常");//此处log只是展示当debug为true时主类内部log会打印异常信息
e.printStackTrace();
})
.register(this);
}
} }

View File

@ -0,0 +1,110 @@
package com.shayu.phonelive;
import android.app.Application;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
/**
* @ClassName NeverCrashUtils
* @Description 全局捕获异常
*/
public class NeverCrashUtils {
private final static String TAG = NeverCrashUtils.class.getSimpleName();
private final static NeverCrashUtils INSTANCE = new NeverCrashUtils();
private boolean debugMode;
private MainCrashHandler mainCrashHandler;
private UncaughtCrashHandler uncaughtCrashHandler;
private NeverCrashUtils() {
}
public static NeverCrashUtils getInstance() {
return INSTANCE;
}
private synchronized MainCrashHandler getMainCrashHandler() {
if (null == mainCrashHandler) {
mainCrashHandler = (t, e) -> {
};
}
return mainCrashHandler;
}
/**
* 主线程发生异常时的回调可用于打印日志文件
* <p>
* 注意跨线程操作的可能
*/
public NeverCrashUtils setMainCrashHandler(MainCrashHandler mainCrashHandler) {
mainCrashHandler = mainCrashHandler;
return this;
}
private synchronized UncaughtCrashHandler getUncaughtCrashHandler() {
if (null == uncaughtCrashHandler) {
uncaughtCrashHandler = (t, e) -> {
};
}
return uncaughtCrashHandler;
}
/**
* 子线程发生异常时的回调可用于打印日志文件
* <p>
* 注意跨线程操作的可能
*/
public NeverCrashUtils setUncaughtCrashHandler(UncaughtCrashHandler uncaughtCrashHandler) {
this.uncaughtCrashHandler = uncaughtCrashHandler;
return this;
}
private boolean isDebugMode() {
return debugMode;
}
/**
* debug模式会打印log日志且toast提醒发生异常反之则都没有
*/
public NeverCrashUtils setDebugMode(boolean debugMode) {
this.debugMode = debugMode;
return this;
}
/**
* 完成监听异常的注册
* @param application application
*/
public void register(Application application) {
//主线程异常拦截
new Handler(Looper.getMainLooper()).post(() -> {
while (true) {
try {
Looper.loop();
} catch (Throwable e) {
if (isDebugMode()) {
Log.e(TAG, "未捕获的主线程异常行为", e);
}
getMainCrashHandler().mainException(Looper.getMainLooper().getThread(), e);
}
}
});
//子线程异常拦截
Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
if (isDebugMode()) {
Log.e(TAG, "未捕获的子线程异常行为", e);
}
getUncaughtCrashHandler().uncaughtException(t, e);
});
}
public interface MainCrashHandler {
void mainException(Thread t, Throwable e);
}
public interface UncaughtCrashHandler {
void uncaughtException(Thread t, Throwable e);
}
}

View File

@ -332,8 +332,11 @@ public class LiveUserMoreDialogFragment extends AbsDialogFragment implements Vie
} }
void Up() { void Up() {
userMoreInfoAdapter.clearData();
bottom_msg.setVisibility(View.VISIBLE); bottom_msg.setVisibility(View.VISIBLE);
title.setVisibility(View.GONE); title.setVisibility(View.GONE);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mRefreshView.getLayoutParams();
params.bottomMargin=DpUtil.dp2px(65);
if (Tips.equals("1")) { if (Tips.equals("1")) {
tags.setText("開通貴族,尊享超多特權!"); tags.setText("開通貴族,尊享超多特權!");
btn.setBackgroundResource(R.mipmap.btn_openvip); btn.setBackgroundResource(R.mipmap.btn_openvip);
@ -361,6 +364,7 @@ public class LiveUserMoreDialogFragment extends AbsDialogFragment implements Vie
type = "fans"; type = "fans";
no_more.setImageResource(R.mipmap.bixin); no_more.setImageResource(R.mipmap.bixin);
}else if(Tips.equals("4")){ }else if(Tips.equals("4")){
params.bottomMargin=DpUtil.dp2px(0);
userMoreInfoAdapter.type = "4"; userMoreInfoAdapter.type = "4";
bottom_msg.setVisibility(View.GONE); bottom_msg.setVisibility(View.GONE);
type="dayRank"; type="dayRank";
@ -368,6 +372,7 @@ public class LiveUserMoreDialogFragment extends AbsDialogFragment implements Vie
gz_view.setVisibility(View.GONE); gz_view.setVisibility(View.GONE);
no_more.setImageResource(R.drawable.img_rank_empty); no_more.setImageResource(R.drawable.img_rank_empty);
}else if (Tips.equals("5")){ }else if (Tips.equals("5")){
params.bottomMargin=DpUtil.dp2px(0);
userMoreInfoAdapter.type = "5"; userMoreInfoAdapter.type = "5";
bottom_msg.setVisibility(View.GONE); bottom_msg.setVisibility(View.GONE);
type="weekRank"; type="weekRank";
@ -375,6 +380,7 @@ public class LiveUserMoreDialogFragment extends AbsDialogFragment implements Vie
no_more.setImageResource(R.drawable.img_rank_empty); no_more.setImageResource(R.drawable.img_rank_empty);
setTextColor(weekRank,audience_btn,guard_btn,fans_btn,gz_view,dayRank); setTextColor(weekRank,audience_btn,guard_btn,fans_btn,gz_view,dayRank);
} }
mRefreshView.setLayoutParams(params);
} }
/** /**