Added a status for the current location in preferences and tracking for it in the SyncAdapter.
This commit is contained in:
@@ -146,6 +146,7 @@ public class SunshineSyncAdapter extends AbstractThreadedSyncAdapter {
|
||||
|
||||
if (buffer.length() == 0) {
|
||||
// Stream was empty. No point in parsing.
|
||||
setLocationStatus(getContext(), LOCATION_STATUS_SERVER_DOWN);
|
||||
return;
|
||||
}
|
||||
forecastJsonStr = buffer.toString();
|
||||
@@ -154,9 +155,11 @@ public class SunshineSyncAdapter extends AbstractThreadedSyncAdapter {
|
||||
Log.e(LOG_TAG, "Error ", e);
|
||||
// If the code didn't successfully get the weather data, there's no point in attempting
|
||||
// to parse it.
|
||||
setLocationStatus(getContext(), LOCATION_STATUS_SERVER_DOWN);
|
||||
} catch (JSONException e) {
|
||||
Log.e(LOG_TAG, e.getMessage(), e);
|
||||
e.printStackTrace();
|
||||
setLocationStatus(getContext(), LOCATION_STATUS_SERVER_INVALID);
|
||||
} finally {
|
||||
if (urlConnection != null) {
|
||||
urlConnection.disconnect();
|
||||
@@ -316,12 +319,13 @@ public class SunshineSyncAdapter extends AbstractThreadedSyncAdapter {
|
||||
|
||||
notifyWeather();
|
||||
}
|
||||
|
||||
Log.d(LOG_TAG, "Sync Complete. " + cVVector.size() + " Inserted");
|
||||
setLocationStatus(getContext(), LOCATION_STATUS_OK);
|
||||
|
||||
} catch (JSONException e) {
|
||||
Log.e(LOG_TAG, e.getMessage(), e);
|
||||
e.printStackTrace();
|
||||
setLocationStatus(getContext(), LOCATION_STATUS_SERVER_INVALID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -547,4 +551,17 @@ public class SunshineSyncAdapter extends AbstractThreadedSyncAdapter {
|
||||
public static void initializeSyncAdapter(Context context) {
|
||||
getSyncAccount(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the location status into shared preference. This function should not be called from
|
||||
* the UI thread because it uses commit to write to the shared preferences.
|
||||
* @param c Context to get the PreferenceManager from.
|
||||
* @param locationStatus The IntDef value to set
|
||||
*/
|
||||
static private void setLocationStatus(Context c, @LocationStatus int locationStatus){
|
||||
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(c);
|
||||
SharedPreferences.Editor spe = sp.edit();
|
||||
spe.putInt(c.getString(R.string.pref_location_status_key), locationStatus);
|
||||
spe.commit();
|
||||
}
|
||||
}
|
||||
@@ -42,6 +42,9 @@
|
||||
<!-- Key name for storing location in SharedPreferences [CHAR LIMIT=NONE] -->
|
||||
<string name="pref_location_key" translatable="false">location</string>
|
||||
|
||||
<!-- Key name for storing location status in SharedPreferences -->
|
||||
<string name="pref_location_status_key" translatable="false">loc-status</string>
|
||||
|
||||
<!-- Default postal code for location preference [CHAR LIMIT=NONE] -->
|
||||
<string name="pref_location_default" translatable="false">94043</string>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user