0

我开发了一个支持法语和英语的应用程序。应用程序正在从 API 获取数据。

我正在使用以下代码来存储同步的最后更新时间。

  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 回答