Clear activity views

This commit is contained in:
M66B
2022-04-15 21:29:00 +02:00
parent 1b0d80cc9b
commit 224fcdb2f4
4 changed files with 34 additions and 28 deletions

View File

@@ -20,7 +20,6 @@ package eu.faircode.email;
*/
import android.Manifest;
import android.animation.Animator;
import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
@@ -60,14 +59,11 @@ import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.PreferenceManager;
import androidx.recyclerview.selection.SelectionTracker;
import androidx.recyclerview.widget.RecyclerView;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -807,26 +803,7 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
@Override
public void onFragmentViewDestroyed(@NonNull FragmentManager fm, @NonNull Fragment f) {
log(fm, f, "onFragmentViewDestroyed");
try {
for (Field field : f.getClass().getDeclaredFields()) {
Class<?> type = field.getType();
if (View.class.isAssignableFrom(type) ||
Animator.class.isAssignableFrom(type) ||
SelectionTracker.class.isAssignableFrom(type) ||
SelectionTracker.SelectionPredicate.class.isAssignableFrom(type) ||
RecyclerView.Adapter.class.isAssignableFrom(type)) {
Log.i("Clearing " + f.getClass().getSimpleName() + ":" + field.getName());
field.setAccessible(true);
if (Animator.class.isAssignableFrom(type))
((Animator) field.get(f)).setTarget(null);
field.set(f, null);
}
}
} catch (Throwable ex) {
Log.w(ex);
}
Helper.clearViews(f);
}
@Override