SharedPreferences存储数据丢失的问题

风中的蜡烛 2014-02-08 08:58:39
现在项目用的是SharedPreferences来保存用户的设定项,以便下一次进入程序读取上一次的设定值,问题是现在SharedPreferences在没有editor.clear和应用程序信息中Clear data的情况下,有极小的概率存在丢失保存数据的现象,也就是自动读取了默认值。我想问下Android中用SharedPreferences来保存设定数据到底靠谱不,官方API写的太简单了,SharedPreferences和文件保存相比,优缺点分别是什么?麻烦大家帮我看下,谢谢了。
...全文
3098 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
付晓宇 2015-11-26
  • 打赏
  • 举报
回复
楼主我也遇到了,请问你是怎么解决的
tmp_zhao 2014-05-18
  • 打赏
  • 举报
回复
不知道lz问题最后是怎么解决的,但这篇博客应该能回答你的问题(搜索丢失数据)。 http://www.cnblogs.com/zhaoxiaowei/p/3733272.html
风中的蜡烛 2014-02-08
  • 打赏
  • 举报
回复
现在领导要我拿出SharedPreference靠谱的有力证据,我该拿什么和他说呢?官方API太简陋了....求大家帮我想想办法。
缺水。的鱼 2014-02-08
  • 打赏
  • 举报
回复
似乎也没遇到过。SharedPreference保存设置项应该是没有问题的,很靠谱的,这个不用怀疑。倒是LZ的代码逻辑最好仔细检查下。
风中的蜡烛 2014-02-08
  • 打赏
  • 举报
回复
说实话我也从没遇到过这情况,我们是两工程共用sharedpreferences的,上星期测试组他们说在A工程中设定完值后,运行B工程,再返回A工程查看设定值时发现都是默认值,只发现一次这种现象,后来都没重现过。现在基本可以排除值没有保存进去的情况,那只剩下保存值丢失的情况了,领导就说SharedPreferences保存值不靠谱,要换文件保存,这改动太大了,简直蛋疼的要死。
MR__P 2014-02-08
  • 打赏
  • 举报
回复
没遇到过,你是不是清除本地了,还是重新操作过了
绝世酱油瓶 2014-02-08
  • 打赏
  • 举报
回复
帮顶,用了很多次,没遇到过偏好参数会丢失数据的情况
实验报告封面 课程名称: Android平台开发与应用 课程代码: SM3004 任课老师: 梁郁君 实验指导老师: 梁郁君 实验报告名称:实验10 Android数据存储与IO 学生姓名: 学号: 教学班: 递交日期: 签收人: 我申明,本报告内的实验已按要求完成,报告完全是由我个人完成,并没有抄袭行 为。我已经保留了这份实验报告的副本。 申明人(签名): 实验报告评语与评分: 评阅老师签名: 一、实验名称:Android数据存储与IO 二、实验日期:2014/11/13 三、实验目的: 1、掌握SharedPreferences存储数据的格式及位置,能够读写其他应用程序的Shared Preferences。 2、File存储数据 3、掌握SQLite存储数据方法。 4、会使用SQLiteOpenHelper辅助类,进行操作数据库。 四、实验用的仪器和材料: PC+Eclipse+ADT 五、实验的步骤和方法: 1、读写其他应用程序SharedPreferences。 读写其他应用程序的SharedPreferences,步骤如下: 创建应用App1 和应用App2,App2尝试读取App1的SharedPreferences内容 在App2 需要创建App1对应的Context。 调用App1的Context的getSharedPreferences(String name,int mode) 即可获取相应的SharedPreferences对象。 如果需要向App1的SharedPreferences数据写入数据,调用SharedPreferences的e dit()方法获取相应的Editor即可。 根据上述说明和下面截图,以及代码注释,完成相关代码片段填空,并思考问题SharedPreferences何时会丢失? 图1 App1运行的界面 图2 App2 运行结果 App1:记录应用程序的使用次数,/com.Test/UseCount.java程序如下,补充程序中所缺 代码: "import android.app.Activity; " "import android.content.SharedPreferences; " "import android.content.SharedPreferences.Editor; " "import android.os.Bundle; " "import android.widget.Toast; " "public class UseCount extends Activity{ " "SharedPreferences preferences; " "@Override " "public void onCreate(Bundle savedInstanceState){ " "super.onCreate(savedInstanceState); " "setContentView(R.layout.main); " "preferences = getSharedPreferences("count", MODE_WORLD_READABLE); " "//读取SharedPreferences里的count数据 " "int count = ("count" , 0); " "//显示程序以前使用的次数 " "Toast.makeText(this , "程序以前被使用了" + count + "次。", " "10000).show(); " "Editor editor = ; " "//存入数据 " "editor.putInt("count" , ++count); " "//提交修改 " "editor. ; " "} " "} " App2:ReadOtherPreferences.java代码如下,补充程序所缺代码: "import android.app.Activity; " "import android.content.Context; " "import android.content.SharedPreferences; " "import " "android.content.pm.PackageManager.NameNotFoundException; " "import android.os.Bundle; " "import android.widget.TextView; " "public class ReadOtherPreferences extends Activity{ " "Context useCount; " "@Override " "public void onCreate(Bundle sav

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧