/**
   * {@inheritDoc}
   *
   * @see android.app.Service#onStartCommand()
   */
  @Override
  public int onStartCommand(Intent intent, int flags, int startId) {
    int retVal = super.onStartCommand(intent, flags, startId);

    Log.initialize(this);

    Log.d(" GmailExtensionService onStartCommand ");

    if (intent == null) {
      Log.d("intent is null.");
      return START_NOT_STICKY; // FIXME: onStartCommand の戻り値はいったい?
    }

    Bundle extras = intent.getExtras();

    SharedPreferences appprefs = PreferenceManager.getDefaultSharedPreferences(this);

    if (extras == null) {
      Log.d("extras is null.");
      return START_NOT_STICKY; // FIXME: onStartCommand の戻り値はいったい?
    } else {

      if ("^^unseen-^i".equals(extras.getString("tagLabel"))) {
        Editor e = appprefs.edit();
        e.putBoolean("tagLabel", true);
        e.commit();
        Log.d("tagLabel ^i isTrue ");
      }
      String extrasStr = "";
      Set<String> set = extras.keySet();
      for (String str : set) {
        Log.d("extras:" + str + ":" + extras.get(str).toString());
        extrasStr = "extras:" + str + ":" + extras.get(str).toString() + "\n";
      }

      Log.d(extrasStr);
    }

    if (appprefs.getBoolean("tagLabel", false)
        && "^^unseen-^iim".equals(extras.getString("tagLabel"))) {
      Log.d("tagLabel ^iim && ^i isTrue ");
      return START_NOT_STICKY; // FIXME: onStartCommand の戻り値はいったい?
    }

    // count の数から新着判定
    account = extras.getString("account");
    unreadcount = extras.getInt("count");

    SharedPreferences pref = getSharedPreferences(account, 0);
    int prev = pref.getInt("count", 0);
    Editor e = pref.edit();
    e.putInt("count", unreadcount);
    e.commit();

    if (prev < extras.getInt("count")) {

      String t = appprefs.getString(account + "_", "");

      if ("".equals(t)) {
        Log.d("sendAnnounce!");
        sendAnnounce(account, "Gmail Received. unread:" + unreadcount);
      } else {

        getFeed(t, unreadcount - prev);
      }
    }

    return retVal;
  }