Make mLock non-static
This commit is contained in:
parent
0eb5899226
commit
a9a5b62e5a
|
|
@ -50,7 +50,7 @@ publishing {
|
||||||
register<MavenPublication>("service") {
|
register<MavenPublication>("service") {
|
||||||
artifactId = "service"
|
artifactId = "service"
|
||||||
group = "io.github.libxposed"
|
group = "io.github.libxposed"
|
||||||
version = "100"
|
version = "100-1.0.0"
|
||||||
pom {
|
pom {
|
||||||
name.set("service")
|
name.set("service")
|
||||||
description.set("Modern Xposed Service Interface")
|
description.set("Modern Xposed Service Interface")
|
||||||
|
|
|
||||||
|
|
@ -28,11 +28,11 @@ public final class RemotePreferences implements SharedPreferences {
|
||||||
|
|
||||||
private static final String TAG = "RemotePreferences";
|
private static final String TAG = "RemotePreferences";
|
||||||
private static final Object CONTENT = new Object();
|
private static final Object CONTENT = new Object();
|
||||||
private static final Lock LOCK = new ReentrantLock();
|
|
||||||
private static final Handler HANDLER = new Handler(Looper.getMainLooper());
|
private static final Handler HANDLER = new Handler(Looper.getMainLooper());
|
||||||
|
|
||||||
private final XposedService mService;
|
private final XposedService mService;
|
||||||
private final String mGroup;
|
private final String mGroup;
|
||||||
|
private final Lock mLock = new ReentrantLock();
|
||||||
private final Map<String, Object> mMap = new ConcurrentHashMap<>();
|
private final Map<String, Object> mMap = new ConcurrentHashMap<>();
|
||||||
private final Map<OnSharedPreferenceChangeListener, Object> mListeners = Collections.synchronizedMap(new WeakHashMap<>());
|
private final Map<OnSharedPreferenceChangeListener, Object> mListeners = Collections.synchronizedMap(new WeakHashMap<>());
|
||||||
|
|
||||||
|
|
@ -199,11 +199,9 @@ public final class RemotePreferences implements SharedPreferences {
|
||||||
List<String> changes = new ArrayList<>(mDelete.size() + mMap.size());
|
List<String> changes = new ArrayList<>(mDelete.size() + mMap.size());
|
||||||
changes.addAll(mDelete);
|
changes.addAll(mDelete);
|
||||||
changes.addAll(mMap.keySet());
|
changes.addAll(mMap.keySet());
|
||||||
synchronized (mListeners) {
|
|
||||||
for (var key : changes) {
|
for (var key : changes) {
|
||||||
mListeners.keySet().forEach(listener -> listener.onSharedPreferenceChanged(RemotePreferences.this, key));
|
mListeners.keySet().forEach(listener -> listener.onSharedPreferenceChanged(RemotePreferences.this, key));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
var bundle = new Bundle();
|
var bundle = new Bundle();
|
||||||
bundle.putSerializable("delete", mDelete);
|
bundle.putSerializable("delete", mDelete);
|
||||||
|
|
@ -224,12 +222,12 @@ public final class RemotePreferences implements SharedPreferences {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean commit() {
|
public boolean commit() {
|
||||||
if (!LOCK.tryLock()) return false;
|
if (!mLock.tryLock()) return false;
|
||||||
try {
|
try {
|
||||||
doUpdate(true);
|
doUpdate(true);
|
||||||
return true;
|
return true;
|
||||||
} finally {
|
} finally {
|
||||||
LOCK.unlock();
|
mLock.unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue