Prevent crash loop

pull/594/head
jhengazuki 7 months ago
parent ab1e1544f3
commit 698f0c8b49
  1. 2
      app/src/main/java/com/fongmi/android/tv/App.java
  2. 5
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  3. 20
      app/src/main/java/com/fongmi/android/tv/ui/activity/CrashActivity.java

@ -117,7 +117,7 @@ public class App extends Application {
Logger.addLogAdapter(getLogAdapter());
OkHttp.get().setDoh(Doh.objectFrom(Setting.getDoh()));
EventBus.builder().addIndex(new EventIndex()).installDefaultEventBus();
CaocConfig.Builder.create().backgroundMode(CaocConfig.BACKGROUND_MODE_SILENT).errorActivity(CrashActivity.class).apply();
CaocConfig.Builder.create().trackActivities(true).backgroundMode(CaocConfig.BACKGROUND_MODE_SILENT).errorActivity(CrashActivity.class).apply();
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {

@ -23,6 +23,7 @@ import com.fongmi.android.tv.utils.Sniffer;
import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderDebug;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Prefers;
import com.github.catvod.utils.Trans;
import com.github.catvod.utils.Util;
@ -64,7 +65,9 @@ public class SiteViewModel extends ViewModel {
Site site = VodConfig.get().getHome();
if (site.getType() == 3) {
Spider spider = site.recent().spider();
String homeContent = spider.homeContent(true);
boolean crash = Prefers.getBoolean("crash");
String homeContent = crash ? "" : spider.homeContent(true);
Prefers.put("crash", false);
SpiderDebug.log(homeContent);
Result result = Result.fromJson(homeContent);
if (!result.getList().isEmpty()) return result;

@ -1,11 +1,15 @@
package com.fongmi.android.tv.ui.activity;
import android.os.Bundle;
import android.text.TextUtils;
import androidx.appcompat.app.AlertDialog;
import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.databinding.ActivityCrashBinding;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.github.catvod.utils.Prefers;
import java.util.Objects;
@ -20,12 +24,28 @@ public class CrashActivity extends BaseActivity {
return mBinding = ActivityCrashBinding.inflate(getLayoutInflater());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setCrash();
}
@Override
protected void initEvent() {
mBinding.details.setOnClickListener(v -> showError());
mBinding.restart.setOnClickListener(v -> CustomActivityOnCrash.restartApplication(this, Objects.requireNonNull(CustomActivityOnCrash.getConfigFromIntent(getIntent()))));
}
private void setCrash() {
String log = CustomActivityOnCrash.getActivityLogFromIntent(getIntent());
if (TextUtils.isEmpty(log)) return;
int lastNewLine = log.lastIndexOf('\n');
String lastLine = (lastNewLine >= 0) ? log.substring(lastNewLine + 1) : log;
if (lastLine.contains(HomeActivity.class.getSimpleName())) {
Prefers.put("crash", true);
}
}
private void showError() {
new AlertDialog.Builder(this)
.setTitle(R.string.crash_details_title)

Loading…
Cancel
Save