diff --git a/app/src/main/java/com/fongmi/android/tv/App.java b/app/src/main/java/com/fongmi/android/tv/App.java index e73835c21..1d27f7bbb 100644 --- a/app/src/main/java/com/fongmi/android/tv/App.java +++ b/app/src/main/java/com/fongmi/android/tv/App.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) { diff --git a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java index fe73105a3..301809dbc 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java @@ -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; diff --git a/app/src/main/java/com/fongmi/android/tv/ui/activity/CrashActivity.java b/app/src/main/java/com/fongmi/android/tv/ui/activity/CrashActivity.java index b650976ee..49d5a580f 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/activity/CrashActivity.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/activity/CrashActivity.java @@ -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)