Merge "Fix LauncherApps registerCallback adding duplicate callbacks." into mnc-dev
This commit is contained in:
@@ -294,7 +294,7 @@ public class LauncherApps {
|
||||
*/
|
||||
public void registerCallback(Callback callback, Handler handler) {
|
||||
synchronized (this) {
|
||||
if (callback != null && !mCallbacks.contains(callback)) {
|
||||
if (callback != null && findCallbackLocked(callback) < 0) {
|
||||
boolean addedFirstCallback = mCallbacks.size() == 0;
|
||||
addCallbackLocked(callback, handler);
|
||||
if (addedFirstCallback) {
|
||||
@@ -325,17 +325,25 @@ public class LauncherApps {
|
||||
}
|
||||
}
|
||||
|
||||
private void removeCallbackLocked(Callback callback) {
|
||||
/** @return position in mCallbacks for callback or -1 if not present. */
|
||||
private int findCallbackLocked(Callback callback) {
|
||||
if (callback == null) {
|
||||
throw new IllegalArgumentException("Callback cannot be null");
|
||||
}
|
||||
final int size = mCallbacks.size();
|
||||
for (int i = 0; i < size; ++i) {
|
||||
if (mCallbacks.get(i).mCallback == callback) {
|
||||
mCallbacks.remove(i);
|
||||
return;
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
private void removeCallbackLocked(Callback callback) {
|
||||
int pos = findCallbackLocked(callback);
|
||||
if (pos >= 0) {
|
||||
mCallbacks.remove(pos);
|
||||
}
|
||||
}
|
||||
|
||||
private void addCallbackLocked(Callback callback, Handler handler) {
|
||||
|
||||
Reference in New Issue
Block a user