code: 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);
          }
      }
  }