mirror of
https://github.com/M66B/FairEmail.git
synced 2026-03-26 19:05:23 +01:00
Fixed runnable memory leaks
This commit is contained in:
@@ -27,9 +27,6 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
public class FixedConstraintLayout extends ConstraintLayout {
|
||||
public FixedConstraintLayout(@NonNull Context context) {
|
||||
super(context);
|
||||
@@ -122,46 +119,4 @@ public class FixedConstraintLayout extends ConstraintLayout {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private Map<Runnable, Runnable> mapRunnable = null;
|
||||
|
||||
@NonNull
|
||||
private Map<Runnable, Runnable> getMapRunnable() {
|
||||
if (mapRunnable == null)
|
||||
mapRunnable = new WeakHashMap<>();
|
||||
return mapRunnable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean post(Runnable action) {
|
||||
Runnable wrapped = new RunnableEx("post") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
return super.post(wrapped);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean postDelayed(Runnable action, long delayMillis) {
|
||||
Runnable wrapped = new RunnableEx("postDelayed") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
return super.postDelayed(wrapped, delayMillis);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeCallbacks(Runnable action) {
|
||||
Runnable wrapped = getMapRunnable().get(action);
|
||||
if (wrapped == null)
|
||||
return super.removeCallbacks(action);
|
||||
else
|
||||
return super.removeCallbacks(wrapped);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,9 +27,6 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
public class FixedCoordinatorLayout extends CoordinatorLayout {
|
||||
public FixedCoordinatorLayout(@NonNull Context context) {
|
||||
super(context);
|
||||
@@ -62,46 +59,4 @@ public class FixedCoordinatorLayout extends CoordinatorLayout {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private Map<Runnable, Runnable> mapRunnable = null;
|
||||
|
||||
@NonNull
|
||||
private Map<Runnable, Runnable> getMapRunnable() {
|
||||
if (mapRunnable == null)
|
||||
mapRunnable = new WeakHashMap<>();
|
||||
return mapRunnable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean post(Runnable action) {
|
||||
Runnable wrapped = new RunnableEx("post") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
return super.post(wrapped);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean postDelayed(Runnable action, long delayMillis) {
|
||||
Runnable wrapped = new RunnableEx("postDelayed") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
return super.postDelayed(wrapped, delayMillis);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeCallbacks(Runnable action) {
|
||||
Runnable wrapped = getMapRunnable().get(action);
|
||||
if (wrapped == null)
|
||||
return super.removeCallbacks(action);
|
||||
else
|
||||
return super.removeCallbacks(wrapped);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,9 +27,6 @@ import android.widget.FrameLayout;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
public class FixedFrameLayout extends FrameLayout {
|
||||
public FixedFrameLayout(@NonNull Context context) {
|
||||
super(context);
|
||||
@@ -75,46 +72,4 @@ public class FixedFrameLayout extends FrameLayout {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private Map<Runnable, Runnable> mapRunnable = null;
|
||||
|
||||
@NonNull
|
||||
private Map<Runnable, Runnable> getMapRunnable() {
|
||||
if (mapRunnable == null)
|
||||
mapRunnable = new WeakHashMap<>();
|
||||
return mapRunnable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean post(Runnable action) {
|
||||
Runnable wrapped = new RunnableEx("post") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
return super.post(wrapped);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean postDelayed(Runnable action, long delayMillis) {
|
||||
Runnable wrapped = new RunnableEx("postDelayed") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
return super.postDelayed(wrapped, delayMillis);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeCallbacks(Runnable action) {
|
||||
Runnable wrapped = getMapRunnable().get(action);
|
||||
if (wrapped == null)
|
||||
return super.removeCallbacks(action);
|
||||
else
|
||||
return super.removeCallbacks(wrapped);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,12 +24,8 @@ import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
public class FixedLinearLayout extends LinearLayout {
|
||||
public FixedLinearLayout(Context context) {
|
||||
super(context);
|
||||
@@ -56,46 +52,4 @@ public class FixedLinearLayout extends LinearLayout {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private Map<Runnable, Runnable> mapRunnable = null;
|
||||
|
||||
@NonNull
|
||||
private Map<Runnable, Runnable> getMapRunnable() {
|
||||
if (mapRunnable == null)
|
||||
mapRunnable = new WeakHashMap<>();
|
||||
return mapRunnable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean post(Runnable action) {
|
||||
Runnable wrapped = new RunnableEx("post") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
return super.post(wrapped);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean postDelayed(Runnable action, long delayMillis) {
|
||||
Runnable wrapped = new RunnableEx("postDelayed") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
return super.postDelayed(wrapped, delayMillis);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeCallbacks(Runnable action) {
|
||||
Runnable wrapped = getMapRunnable().get(action);
|
||||
if (wrapped == null)
|
||||
return super.removeCallbacks(action);
|
||||
else
|
||||
return super.removeCallbacks(wrapped);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,9 +32,6 @@ import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.FastScrollerEx;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
public class FixedRecyclerView extends RecyclerView {
|
||||
public FixedRecyclerView(@NonNull Context context) {
|
||||
super(context);
|
||||
@@ -210,70 +207,4 @@ public class FixedRecyclerView extends RecyclerView {
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
private Map<Runnable, Runnable> mapRunnable = null;
|
||||
|
||||
@NonNull
|
||||
private Map<Runnable, Runnable> getMapRunnable() {
|
||||
if (mapRunnable == null)
|
||||
mapRunnable = new WeakHashMap<>();
|
||||
return mapRunnable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean post(Runnable action) {
|
||||
Runnable wrapped = new RunnableEx("post") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
return super.post(wrapped);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean postDelayed(Runnable action, long delayMillis) {
|
||||
Runnable wrapped = new RunnableEx("postDelayed") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
return super.postDelayed(wrapped, delayMillis);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postOnAnimation(Runnable action) {
|
||||
Runnable wrapped = new RunnableEx("postOnAnimation") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
super.postOnAnimation(wrapped);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postOnAnimationDelayed(Runnable action, long delayMillis) {
|
||||
Runnable wrapped = new RunnableEx("postOnAnimationDelayed") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
super.postOnAnimationDelayed(wrapped, delayMillis);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeCallbacks(Runnable action) {
|
||||
Runnable wrapped = getMapRunnable().get(action);
|
||||
if (wrapped == null)
|
||||
return super.removeCallbacks(action);
|
||||
else
|
||||
return super.removeCallbacks(wrapped);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,11 +24,6 @@ import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
public class FixedRelativeLayout extends RelativeLayout {
|
||||
public FixedRelativeLayout(Context context) {
|
||||
super(context);
|
||||
@@ -55,46 +50,4 @@ public class FixedRelativeLayout extends RelativeLayout {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private Map<Runnable, Runnable> mapRunnable = null;
|
||||
|
||||
@NonNull
|
||||
private Map<Runnable, Runnable> getMapRunnable() {
|
||||
if (mapRunnable == null)
|
||||
mapRunnable = new WeakHashMap<>();
|
||||
return mapRunnable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean post(Runnable action) {
|
||||
Runnable wrapped = new RunnableEx("post") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
return super.post(wrapped);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean postDelayed(Runnable action, long delayMillis) {
|
||||
Runnable wrapped = new RunnableEx("postDelayed") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
return super.postDelayed(wrapped, delayMillis);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeCallbacks(Runnable action) {
|
||||
Runnable wrapped = getMapRunnable().get(action);
|
||||
if (wrapped == null)
|
||||
return super.removeCallbacks(action);
|
||||
else
|
||||
return super.removeCallbacks(wrapped);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,11 +5,6 @@ import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.widget.ScrollView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
/*
|
||||
This file is part of FairEmail.
|
||||
|
||||
@@ -134,46 +129,4 @@ public class FixedScrollView extends ScrollView {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private Map<Runnable, Runnable> mapRunnable = null;
|
||||
|
||||
@NonNull
|
||||
private Map<Runnable, Runnable> getMapRunnable() {
|
||||
if (mapRunnable == null)
|
||||
mapRunnable = new WeakHashMap<>();
|
||||
return mapRunnable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean post(Runnable action) {
|
||||
Runnable wrapped = new RunnableEx("post") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
return super.post(wrapped);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean postDelayed(Runnable action, long delayMillis) {
|
||||
Runnable wrapped = new RunnableEx("postDelayed") {
|
||||
@Override
|
||||
protected void delegate() {
|
||||
action.run();
|
||||
}
|
||||
};
|
||||
getMapRunnable().put(action, wrapped);
|
||||
return super.postDelayed(wrapped, delayMillis);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeCallbacks(Runnable action) {
|
||||
Runnable wrapped = getMapRunnable().get(action);
|
||||
if (wrapped == null)
|
||||
return super.removeCallbacks(action);
|
||||
else
|
||||
return super.removeCallbacks(wrapped);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user