From a718f9bbfd1de9c5ce3c10d9a94c99d6fb045b13 Mon Sep 17 00:00:00 2001 From: tonymanou Date: Thu, 12 Jan 2017 01:46:07 +0100 Subject: [PATCH] Unbind Butterknife-injected views in fragment's onDestroyView() --- .../java/com/topjohnwu/magisk/InstallFragment.java | 10 +++++++++- .../main/java/com/topjohnwu/magisk/LogFragment.java | 10 +++++++++- .../java/com/topjohnwu/magisk/MagiskHideFragment.java | 10 +++++++++- .../java/com/topjohnwu/magisk/ModulesFragment.java | 10 +++++++++- .../main/java/com/topjohnwu/magisk/ReposFragment.java | 11 +++++++++-- .../java/com/topjohnwu/magisk/StatusFragment.java | 10 +++++++++- 6 files changed, 54 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/topjohnwu/magisk/InstallFragment.java b/app/src/main/java/com/topjohnwu/magisk/InstallFragment.java index 572678ae3..2ac23fe7f 100644 --- a/app/src/main/java/com/topjohnwu/magisk/InstallFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/InstallFragment.java @@ -24,6 +24,7 @@ import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; +import butterknife.Unbinder; public class InstallFragment extends Fragment implements CallbackHandler.EventListener { @@ -32,6 +33,7 @@ public class InstallFragment extends Fragment implements CallbackHandler.EventLi public static List blockList; public static String bootBlock = null; + private Unbinder unbinder; @BindView(R.id.current_version_title) TextView currentVersionTitle; @BindView(R.id.install_title) TextView installTitle; @BindView(R.id.block_spinner) Spinner spinner; @@ -44,7 +46,7 @@ public class InstallFragment extends Fragment implements CallbackHandler.EventLi @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.install_fragment, container, false); - ButterKnife.bind(this, v); + unbinder = ButterKnife.bind(this, v); detectButton.setOnClickListener(v1 -> toAutoDetect()); currentVersionTitle.setText(getString(R.string.current_magisk_title, StatusFragment.magiskVersionString)); installTitle.setText(getString(R.string.install_magisk_title, StatusFragment.remoteMagiskVersion)); @@ -109,4 +111,10 @@ public class InstallFragment extends Fragment implements CallbackHandler.EventLi CallbackHandler.unRegister(blockDetectionDone, this); super.onStop(); } + + @Override + public void onDestroyView() { + super.onDestroyView(); + unbinder.unbind(); + } } diff --git a/app/src/main/java/com/topjohnwu/magisk/LogFragment.java b/app/src/main/java/com/topjohnwu/magisk/LogFragment.java index 15fd976d4..4d09deed3 100644 --- a/app/src/main/java/com/topjohnwu/magisk/LogFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/LogFragment.java @@ -38,11 +38,13 @@ import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; +import butterknife.Unbinder; public class LogFragment extends Fragment { private static final String MAGISK_LOG = "/cache/magisk.log"; + private Unbinder unbinder; @BindView(R.id.txtLog) TextView txtLog; @BindView(R.id.svLog) ScrollView svLog; @BindView(R.id.hsvLog) HorizontalScrollView hsvLog; @@ -61,7 +63,7 @@ public class LogFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.log_fragment, container, false); - ButterKnife.bind(this, view); + unbinder = ButterKnife.bind(this, view); txtLog.setTextIsSelectable(true); @@ -82,6 +84,12 @@ public class LogFragment extends Fragment { new LogManager().read(); } + @Override + public void onDestroyView() { + super.onDestroyView(); + unbinder.unbind(); + } + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_log, menu); diff --git a/app/src/main/java/com/topjohnwu/magisk/MagiskHideFragment.java b/app/src/main/java/com/topjohnwu/magisk/MagiskHideFragment.java index b4a14ec4c..7d32f4283 100644 --- a/app/src/main/java/com/topjohnwu/magisk/MagiskHideFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/MagiskHideFragment.java @@ -25,9 +25,11 @@ import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; +import butterknife.Unbinder; public class MagiskHideFragment extends Fragment implements CallbackHandler.EventListener { + private Unbinder unbinder; @BindView(R.id.swipeRefreshLayout) SwipeRefreshLayout mSwipeRefreshLayout; @BindView(R.id.recyclerView) RecyclerView recyclerView; @@ -56,7 +58,7 @@ public class MagiskHideFragment extends Fragment implements CallbackHandler.Even @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.magisk_hide_fragment, container, false); - ButterKnife.bind(this, view); + unbinder = ButterKnife.bind(this, view); PackageManager packageManager = getActivity().getPackageManager(); @@ -108,6 +110,12 @@ public class MagiskHideFragment extends Fragment implements CallbackHandler.Even super.onStop(); } + @Override + public void onDestroyView() { + super.onDestroyView(); + unbinder.unbind(); + } + @Override public void onTrigger(CallbackHandler.Event event) { Logger.dev("MagiskHideFragment: UI refresh"); diff --git a/app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java b/app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java index ae3c3a15f..f62786146 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java @@ -26,6 +26,7 @@ import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; +import butterknife.Unbinder; public class ModulesFragment extends Fragment implements CallbackHandler.EventListener { @@ -33,6 +34,7 @@ public class ModulesFragment extends Fragment implements CallbackHandler.EventLi private static final int FETCH_ZIP_CODE = 2; + private Unbinder unbinder; @BindView(R.id.swipeRefreshLayout) SwipeRefreshLayout mSwipeRefreshLayout; @BindView(R.id.recyclerView) RecyclerView recyclerView; @BindView(R.id.empty_rv) TextView emptyTv; @@ -44,7 +46,7 @@ public class ModulesFragment extends Fragment implements CallbackHandler.EventLi @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.modules_fragment, container, false); - ButterKnife.bind(this, view); + unbinder = ButterKnife.bind(this, view); fabio.setOnClickListener(v -> { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); @@ -105,6 +107,12 @@ public class ModulesFragment extends Fragment implements CallbackHandler.EventLi super.onStop(); } + @Override + public void onDestroyView() { + super.onDestroyView(); + unbinder.unbind(); + } + private void updateUI() { ModuleHelper.getModuleList(listModules); if (listModules.size() == 0) { diff --git a/app/src/main/java/com/topjohnwu/magisk/ReposFragment.java b/app/src/main/java/com/topjohnwu/magisk/ReposFragment.java index bfabcd2a4..87e219010 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ReposFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/ReposFragment.java @@ -27,11 +27,13 @@ import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; +import butterknife.Unbinder; public class ReposFragment extends Fragment implements CallbackHandler.EventListener { public static final CallbackHandler.Event repoLoadDone = new CallbackHandler.Event(); + private Unbinder unbinder; @BindView(R.id.recyclerView) RecyclerView recyclerView; @BindView(R.id.empty_rv) TextView emptyTv; @BindView(R.id.swipeRefreshLayout) SwipeRefreshLayout mSwipeRefreshLayout; @@ -57,8 +59,7 @@ public class ReposFragment extends Fragment implements CallbackHandler.EventList @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.repos_fragment, container, false); - - ButterKnife.bind(this, view); + unbinder = ButterKnife.bind(this, view); mSectionedAdapter = new SimpleSectionedRecyclerViewAdapter(getActivity(), R.layout.section, @@ -121,6 +122,12 @@ public class ReposFragment extends Fragment implements CallbackHandler.EventList super.onStop(); } + @Override + public void onDestroyView() { + super.onDestroyView(); + unbinder.unbind(); + } + private void reloadRepos() { ModuleHelper.getRepoLists(mUpdateRepos, mInstalledRepos, mOthersRepos); fUpdateRepos.clear(); diff --git a/app/src/main/java/com/topjohnwu/magisk/StatusFragment.java b/app/src/main/java/com/topjohnwu/magisk/StatusFragment.java index 6b1f8b018..4aa571020 100644 --- a/app/src/main/java/com/topjohnwu/magisk/StatusFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/StatusFragment.java @@ -26,6 +26,7 @@ import java.util.List; import butterknife.BindColor; import butterknife.BindView; import butterknife.ButterKnife; +import butterknife.Unbinder; public class StatusFragment extends Fragment implements CallbackHandler.EventListener { @@ -38,6 +39,7 @@ public class StatusFragment extends Fragment implements CallbackHandler.EventLis public static final CallbackHandler.Event updateCheckDone = new CallbackHandler.Event(); public static final CallbackHandler.Event safetyNetDone = new CallbackHandler.Event(); + private Unbinder unbinder; @BindView(R.id.swipeRefreshLayout) SwipeRefreshLayout mSwipeRefreshLayout; @BindView(R.id.magisk_status_container) View magiskStatusContainer; @@ -74,7 +76,7 @@ public class StatusFragment extends Fragment implements CallbackHandler.EventLis @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v = inflater.inflate(R.layout.status_fragment, container, false); - ButterKnife.bind(this, v); + unbinder = ButterKnife.bind(this, v); defaultColor = magiskUpdateText.getCurrentTextColor(); @@ -161,6 +163,12 @@ public class StatusFragment extends Fragment implements CallbackHandler.EventLis super.onStop(); } + @Override + public void onDestroyView() { + super.onDestroyView(); + unbinder.unbind(); + } + private static void checkMagiskInfo() { List ret = Shell.sh("getprop magisk.version"); if (ret.get(0).length() == 0) {