mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-10-27 13:29:40 +00:00
Update CallbackEvents
This commit is contained in:
@@ -1,32 +1,29 @@
|
||||
package com.topjohnwu.magisk.utils;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class CallbackEvent<Result> {
|
||||
public class CallbackEvent {
|
||||
|
||||
public boolean isTriggered = false;
|
||||
private Result result;
|
||||
private List<WeakReference<Listener<Result>>> listeners;
|
||||
private List<WeakReference<Listener>> listeners;
|
||||
|
||||
public void register(Listener<Result> l) {
|
||||
public void register(Listener l) {
|
||||
if (listeners == null) {
|
||||
listeners = new LinkedList<>();
|
||||
}
|
||||
listeners.add(new WeakReference<>(l));
|
||||
}
|
||||
|
||||
public void unRegister() {
|
||||
public void unregister() {
|
||||
listeners = null;
|
||||
}
|
||||
|
||||
public void unRegister(Listener<Result> l) {
|
||||
for (Iterator<WeakReference<Listener<Result>>> i = listeners.iterator(); i.hasNext();) {
|
||||
WeakReference<Listener<Result>> listener = i.next();
|
||||
public void unregister(Listener l) {
|
||||
for (Iterator<WeakReference<Listener>> i = listeners.iterator(); i.hasNext();) {
|
||||
WeakReference<Listener> listener = i.next();
|
||||
if (listener.get() == null || listener.get() == l) {
|
||||
i.remove();
|
||||
}
|
||||
@@ -34,25 +31,38 @@ public class CallbackEvent<Result> {
|
||||
}
|
||||
|
||||
public void trigger() {
|
||||
trigger(null);
|
||||
trigger(true);
|
||||
}
|
||||
|
||||
public void trigger(Result r) {
|
||||
result = r;
|
||||
isTriggered = true;
|
||||
public void trigger(boolean b) {
|
||||
isTriggered = b;
|
||||
if (listeners != null) {
|
||||
for (WeakReference<Listener<Result>> listener : listeners) {
|
||||
for (WeakReference<Listener> listener : listeners) {
|
||||
if (listener.get() != null)
|
||||
listener.get().onTrigger(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Result getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public interface Listener<R> {
|
||||
void onTrigger(CallbackEvent<R> event);
|
||||
public interface Listener {
|
||||
default void registerEvents() {
|
||||
for (CallbackEvent event : getRegisterEvents()) {
|
||||
if (event.isTriggered) {
|
||||
onTrigger(event);
|
||||
}
|
||||
event.register(this);
|
||||
}
|
||||
}
|
||||
default void unregisterEvents() {
|
||||
for (CallbackEvent event : getRegisterEvents()) {
|
||||
event.unregister(this);
|
||||
}
|
||||
}
|
||||
default void onTrigger() {
|
||||
onTrigger(null);
|
||||
}
|
||||
void onTrigger(CallbackEvent event);
|
||||
CallbackEvent[] getRegisterEvents();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,14 +11,12 @@ import android.content.IntentFilter;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.database.Cursor;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.net.Uri;
|
||||
import android.os.Environment;
|
||||
import android.provider.OpenableColumns;
|
||||
import android.support.annotation.IdRes;
|
||||
import android.support.annotation.StringRes;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
@@ -26,7 +24,6 @@ import android.support.v4.app.FragmentActivity;
|
||||
import android.support.v4.app.TaskStackBuilder;
|
||||
import android.support.v7.app.NotificationCompat;
|
||||
import android.text.TextUtils;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.topjohnwu.magisk.MagiskManager;
|
||||
@@ -40,7 +37,6 @@ import com.topjohnwu.magisk.receivers.ManagerUpdate;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
Reference in New Issue
Block a user