Shared Preferences Not Applying Changes(共享首选项不应用更改)
本文介绍了共享首选项不应用更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个活动(A)检查我的服务器是否有APK更新。当调用此函数时,无论是否有更新,我都需要编辑共享首选项,以便应用程序知道跳过或运行实际的更新活动(B)。问题1是,为什么活动(A)没有编辑共享首选项?问题2是,如果正在编辑它们,为什么活动(B)没有阅读它们?提前感谢您!
应在此处编辑共享首选项(活动(A)):
private void parseJson(String result) {
try {
JSONObject obj = new JSONObject(result);
String updateMessage = obj.getString(Constants.APK_UPDATE_CONTENT);
String apkUrl = obj.getString(Constants.APK_DOWNLOAD_URL);
int apkCode = obj.getInt(Constants.APK_VERSION_CODE);
int versionCode = AppUtils.getVersionCode(mContext);
if (apkCode > versionCode) {
if (mType == Constants.TYPE_NOTIFICATION) {
showNotification(mContext, updateMessage, apkUrl);
} else if (mType == Constants.TYPE_DIALOG) {
SharedPreferences pref = mContext.getSharedPreferences("ActivityUpdatePREF", Context.MODE_PRIVATE);
SharedPreferences.Editor ed = pref.edit();
ed.putBoolean("activity_update", true);
ed.apply();
showDialog(mContext, updateMessage, apkUrl);
}
} else if (mShowProgressDialog) {
SharedPreferences pref = mContext.getSharedPreferences("ActivityUpdatePREF", Context.MODE_PRIVATE);
SharedPreferences.Editor ed = pref.edit();
ed.putBoolean("activity_update", false);
ed.apply();
Toast.makeText(mContext, mContext.getString(R.string.android_auto_update_toast_no_new_update), Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
Log.e(Constants.TAG, "parse json error");
}
}
活动(B):
SharedPreferences pref = getSharedPreferences("ActivityUpdatePREF", Context.MODE_PRIVATE);
if(pref.getBoolean("activity_update", false)){
Intent intent = new Intent(this, Main.class);
deleteCache(getApplicationContext());
startActivity(intent);
finish();
} else {
functionUp();
}
推荐答案
使用Commit()和Not Apply()
与Commit()不同,Commit()将其首选项写出为Persistent 存储同步时,Apply()将其更改提交到内存中 立即共享首选项,但开始异步提交 磁盘,您将不会收到任何故障通知。如果另一个编辑打开 此SharedPreferences执行常规Commit(),而Apply()为 仍未完成,则Commit()将暂停,直到所有异步提交 已完成以及提交本身。
https://developer.android.com/reference/android/content/SharedPreferences.Editor.html#apply()
这篇关于共享首选项不应用更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:共享首选项不应用更改


猜你喜欢
- 未找到/usr/local/lib 中的库 2022-01-01
- 获取数字的最后一位 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- 转换 ldap 日期 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01