Extend ExtraCore class capabilities

This commit is contained in:
SerpentSpirale 2021-11-06 10:41:42 +01:00
parent c3dce5aa84
commit 0d08bcbd51
3 changed files with 36 additions and 3 deletions

View file

@ -343,7 +343,7 @@ public class PojavLauncherActivity extends BaseLauncherActivity
}else{ }else{
super.onBackPressed(); super.onBackPressed();
//additional code //additional code
ExtraCore.removeExtraListener("back_preference", backPreferenceListener); ExtraCore.removeExtraListenerFromValue("back_preference", backPreferenceListener);
finish(); finish();
} }
} }

View file

@ -53,6 +53,16 @@ public final class ExtraCore {
return getInstance().valueMap.get(key); return getInstance().valueMap.get(key);
} }
/** Remove the key and its value from the valueMap */
public static void removeValue(String key){
getInstance().valueMap.remove(key);
}
/** Remove all values */
public static void removeAllValues(){
getInstance().valueMap.clear();
}
/** /**
* Link an ExtraListener to a value * Link an ExtraListener to a value
* @param key The value key to look for * @param key The value key to look for
@ -76,7 +86,7 @@ public final class ExtraCore {
* @param key The value key to ignore now * @param key The value key to ignore now
* @param listener The ExtraListener to unlink * @param listener The ExtraListener to unlink
*/ */
public static void removeExtraListener(String key, ExtraListener listener){ public static void removeExtraListenerFromValue(String key, ExtraListener listener){
ConcurrentLinkedQueue<WeakReference<ExtraListener>> listenerList = getInstance().listenerMap.get(key); ConcurrentLinkedQueue<WeakReference<ExtraListener>> listenerList = getInstance().listenerMap.get(key);
// Look for new sets // Look for new sets
if(listenerList == null){ if(listenerList == null){
@ -93,4 +103,27 @@ public final class ExtraCore {
} }
} }
} }
/**
* Unlink all ExtraListeners from a value
* @param key The key to which ExtraListener are linked
*/
public static void removeAllExtraListenersFromValue(String key){
ConcurrentLinkedQueue<WeakReference<ExtraListener>> listenerList = getInstance().listenerMap.get(key);
// Look for new sets
if(listenerList == null){
listenerList = new ConcurrentLinkedQueue<>();
getInstance().listenerMap.put(key, listenerList);
}
listenerList.clear();
}
/**
* Remove all ExtraListeners from listening to any value
*/
public static void removeAllExtraListeners(){
getInstance().listenerMap.clear();
}
} }

View file

@ -12,7 +12,7 @@ public abstract class ExtraListener {
*/ */
public final void notifyDataChanged(String key, String value){ public final void notifyDataChanged(String key, String value){
if(onValueSet(key, value)){ if(onValueSet(key, value)){
ExtraCore.removeExtraListener(key, this); ExtraCore.removeExtraListenerFromValue(key, this);
} }
} }