private void updateWeather() {
      mHandler.removeCallbacks(mWeatherUpdater);

      if (WeatherHandler.instance().updateMinutes() > 0) {
        WeatherHandler.instance().update(mUserAgent);

        boolean redraw = false;
        for (int i = 0; i < mInfoList.size(); ++i) {
          if (mInfoList.get(i).isType(InfoItem.TYPE_WEATHER)) {
            redraw = true;
            mInfoList.get(i).update(InfoItem.TYPE_WEATHER, null);
          }
        }

        if (redraw) {
          updateWallpaper();
        }

        mHandler.postDelayed(mWeatherUpdater, WeatherHandler.instance().updateMinutes() * 60000);
      }
    }
    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
      String sVal = "";
      int iVal1 = 0;
      int iVal2 = 0;

      mHide = prefs.getBoolean(HIDE_WHEN_LOCKED, false);

      // BACKGROUND
      sVal = prefs.getString(BACKGROUND_IMAGE, "");
      if (sVal.length() > 0) loadImage(sVal);
      else mBackground.clearImage();
      iVal1 = prefs.getInt(BACKGROUND_SINGLE_COLOR, 0x00ffffff);
      iVal2 = prefs.getInt(BACKGROUND_TWO_COLORS, iVal1);
      mBackground.setColor(iVal1, iVal2);

      mInfoOnAllScreens = true;

      // ITEMS
      iVal1 = prefs.getInt(INFO_COUNT, 0);

      if (iVal1 == 0) {
        createDefault();
      } else {
        mInfoList.clear();
        InfoItem item = null;
        for (int i = 0; i < iVal1; ++i) {
          item = InfoItem.loadFromSharedPreference(LiveInfoWallpaper.this, prefs, getAssets(), i);

          if (item != null) {
            if (item.mScreen >= 0) {
              mInfoOnAllScreens = false;
            }

            mInfoList.add(item);
          }
        }
      }

      sVal = prefs.getString(WEATHER_KEY_LOCATION, "");

      WeatherHandler.instance().setLocation(sVal);
      iVal1 = prefs.getInt(WEATHER_KEY_UPDATE, 0);
      WeatherHandler.instance().updateMinutes(iVal1);
      iVal1 = prefs.getInt(WEATHER_KEY_ICONS_SIZE, 100);
      WeatherHandler.instance().setIconSize(100);
      sVal = prefs.getString(WEATHER_KEY_ICONS, "");
      WeatherHandler.instance().setIconSet(sVal);
      boolean bVal = prefs.getBoolean(WEATHER_KEY_FAHRENHEIT, false);
      WeatherHandler.instance().useFahrenheit(bVal);

      if (WeatherHandler.instance().updateMinutes() > 0) {
        mHandler.post(mWeatherUpdater);
      }

      updateBatteryItems(registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)));
      updatePhoneInfo();
      updateDateTimeItems();
    }