共享首选项不应用更改

本教程将介绍共享首选项不应用更改的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

共享首选项不应用更改 教程 第1张

问题描述

我有一个活动(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()将暂停,直到所有异步提交
已完成以及提交本身。

好了关于共享首选项不应用更改的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。