package com.lody.virtual.server.am;
import android.os.IBinder;
import android.os.RemoteException;
import com.lody.virtual.remote.PendingIntentData;
import java.util.HashMap;
import java.util.Map;
/**
* @author Lody
*/
public final class PendingIntents {
private final Map<IBinder, PendingIntentData> mLruHistory = new HashMap<>();
final PendingIntentData getPendingIntent(IBinder binder) {
synchronized (mLruHistory) {
return mLruHistory.get(binder);
}
}
final void addPendingIntent(final IBinder binder, String creator) {
synchronized (mLruHistory) {
try {
binder.linkToDeath(new IBinder.DeathRecipient() {
@Override
public void binderDied() {
binder.unlinkToDeath(this, 0);
mLruHistory.remove(binder);
}
}, 0);
} catch (RemoteException e) {
e.printStackTrace();
}
PendingIntentData pendingIntentData = mLruHistory.get(binder);
if (pendingIntentData == null) {
mLruHistory.put(binder, new PendingIntentData(creator, binder));
} else {
pendingIntentData.creator = creator;
}
}
}
final void removePendingIntent(IBinder binder) {
synchronized (mLruHistory) {
mLruHistory.remove(binder);
}
}
}