@Override
    protected void onHandleIntent(Intent intent) {
      Log.v(ApeicUtil.TAG_HTTP, "UpdateInstalledAppsIntentService onHandleIntent");

      PackageManager pm = getPackageManager();
      Set<String> currInstalledApps = new HashSet<String>();
      for (ApplicationInfo info : pm.getInstalledApplications(PackageManager.GET_META_DATA)) {
        if (pm.getLaunchIntentForPackage(info.packageName) != null) {
          currInstalledApps.add(info.packageName);
        }
      }

      ApeicPrefsUtil prefsUtil = ApeicPrefsUtil.getInstance(this);
      Set<String> registeringApps = prefsUtil.getStringSetPref(ApeicPrefsUtil.KEY_REGISTERING_APPS);
      if (registeringApps.size() > 0) {
        Log.v(ApeicUtil.TAG_HTTP, "Re-update newly installed apps.");
        registerApps(prefsUtil.getStringSetPref(ApeicPrefsUtil.KEY_REGISTERING_APPS));
      }
      Set<String> unregisteringApps =
          prefsUtil.getStringSetPref(ApeicPrefsUtil.KEY_REGISTERING_APPS);
      if (unregisteringApps.size() > 0) {
        Log.v(ApeicUtil.TAG_HTTP, "Re-update uninstalled installed apps.");
        unregisterApps(prefsUtil.getStringSetPref(ApeicPrefsUtil.KEY_UNREGISTERING_APPS));
      }

      if (prefsUtil.getPrefs().contains(ApeicPrefsUtil.KEY_INSTALLED_APPS)) {
        Set<String> lastInstalledApps =
            prefsUtil.getStringSetPref(ApeicPrefsUtil.KEY_INSTALLED_APPS);
        Set<String> newlyInstalledApps =
            getNewlyInstalledApps(currInstalledApps, lastInstalledApps);
        if (newlyInstalledApps.size() > 0) {
          Log.v(ApeicUtil.TAG_HTTP, "Newly installed Apps: ");
          registerApps(newlyInstalledApps);
        }

        Set<String> removedApps = getUninstalledApps(currInstalledApps, lastInstalledApps);
        if (removedApps.size() > 0) {
          Log.v(ApeicUtil.TAG_HTTP, "Uninstalled Apps: ");
          unregisterApps(removedApps);
        }
      } else {
        Log.v(ApeicUtil.TAG_HTTP, "Current installed Apps: ");
        registerApps(currInstalledApps);
      }

      ApeicPrefsUtil.getInstance(this)
          .setStringSetPref(ApeicPrefsUtil.KEY_INSTALLED_APPS, currInstalledApps);
    }