@Override
  public boolean onCreateOptionsMenu(Menu menu) {
    this.optionsMenu = menu;
    getMenuInflater().inflate(R.menu.stations_list, menu);

    if (jsonDownloadTask != null
        && (jsonDownloadTask.getStatus() == AsyncTask.Status.PENDING
            || jsonDownloadTask.getStatus() == AsyncTask.Status.RUNNING)) {
      setRefreshActionButtonState(true);
    }

    SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);

    searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
    searchView.setSearchableInfo(manager.getSearchableInfo(getComponentName()));
    searchView.setOnQueryTextListener(
        new SearchView.OnQueryTextListener() {

          @Override
          public boolean onQueryTextSubmit(String s) {
            return false;
          }

          @Override
          public boolean onQueryTextChange(String s) {
            loadData(s);
            return true;
          }
        });

    return true;
  }
  @Override
  protected void onResume() {
    super.onResume();

    if ((jsonDownloadTask != null && jsonDownloadTask.getStatus() == AsyncTask.Status.FINISHED)) {
      long dbLastUpdate = settings.getLong(PREF_KEY_DB_LAST_UPDATE, -1);
      long currentTime = System.currentTimeMillis();

      /* update automatically if data are more than 10 min old */
      if ((dbLastUpdate != -1) && ((currentTime - dbLastUpdate) > 600000)) {
        String networkId = settings.getString(PREF_KEY_NETWORK_ID, "");
        String stationUrl = BASE_URL + "/" + networkId;
        jsonDownloadTask = new JSONDownloadTask();
        jsonDownloadTask.execute(stationUrl);
      }
    }
  }