From cc1168bad90c29a5747c46880771dcb095c1660b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=8B=E9=A1=B5?= <31466456+canyie@users.noreply.github.com> Date: Wed, 25 Aug 2021 22:18:49 +0800 Subject: [PATCH] [app] Remove pending preload action when detaching (#1006) Fix crash caused by preloading WebView when fragment is deteched --- .../org/lsposed/manager/ui/fragment/RepoFragment.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/RepoFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/RepoFragment.java index 8347746b..82aa2d34 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/RepoFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/RepoFragment.java @@ -66,6 +66,7 @@ public class RepoFragment extends BaseFragment implements RepoLoader.Listener { protected FragmentRepoBinding binding; protected SearchView searchView; private SearchView.OnQueryTextListener mSearchListener; + private Handler mHandler = new Handler(Looper.getMainLooper()); private boolean preLoadWebview = true; private final RepoLoader repoLoader = RepoLoader.getInstance(); @@ -130,13 +131,19 @@ public class RepoFragment extends BaseFragment implements RepoLoader.Listener { super.onResume(); adapter.initData(); if (preLoadWebview) { - new Handler(Looper.getMainLooper()).postDelayed(() -> { - if (!isRemoving()) new WebView(requireContext()); + mHandler.postDelayed(() -> { + new WebView(requireContext()); }, 500); preLoadWebview = false; } } + @Override + public void onDetach() { + mHandler.removeCallbacksAndMessages(null); + super.onDetach(); + } + @Override public void repoLoaded() { requireActivity().runOnUiThread(() -> {