0

フランス語と英語をサポートするアプリを開発しました。アプリは API からデータを取得しています。

次のコードを使用して、同期のために LAST UPDATED TIME を保存しています。

  public static long getLastUpdatedTime(Context ctx) {
    SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(ctx);
    return sharedPref.getLong(PREF_LAST_UPDATED_TIME, 0);
}

public static void updateLastUpdatedTime(Context ctx, Long time) {
    SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(ctx);
    SharedPreferences.Editor ed = sharedPref.edit();
    ed.putLong(PREF_LAST_UPDATED_TIME, time);
    ed.commit();
}

アプリは正常に動作していますが、ユーザーが電話/タブレットで言語を変更すると、上記の保存された値がクリアされません。ユーザーがある言語から別の言語に切り替えるときにキャッシュをクリアしたい。

出来ますか?

同期中に最後に更新されたサーバー時間を URL に追加しているため、これを行いたいと考えています。

timefromcache = getLastUpdatedTime(context);
synchurl = www.xyz.com/data/customers/?time=timefromcache

モバイル/タブレットの言語を変更しながら、サーバーから言語固有のデータを取得したいと考えています。

4

1 に答える 1

2

さて、次の方法でデバイスの言語を簡単に確認できます。

Locale.getDefault().getLanguage();

これは、たとえば「DE」または「PL」を返す必要があります。次に、これを に保存できますSharedPreferences。アプリを起動するたびに (またはonResume()、すべてのアクティビティで起動することもあるかもしれません)、現在のデバイスの言語が からのこの言語と等しいかどうかを確認する必要がありますSharedPreferences。そうでない場合は、キャッシュ/データベースなどをクリアする必要があります。

于 2012-12-05T17:59:45.107 に答える