Ree*_*eed 14 android taskmanager preference preferenceactivity sharedpreferences
编辑: 下面描述的问题是由于一个非常奇怪的设备问题不是由任何编码相关的问题引起的.
我有一个preferenceActivity,其中有很多checkBoxPreferences.checkBoxPreference假设保存默认的共享首选项文件,然后在我打开应用程序时再次调用以更新UI.
这不会像它想象的那样发生.如果我关闭应用程序并将其重新打开,我的值仍然像他们想象的那样,但如果我使用任务管理器来结束应用程序,或者如果我重新启动手机(当应用程序未运行时),则调用defaultValues再次.
所以,我在onResume()中创建了一个SharedPreference来测试它.
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)
然后我检查该共享首选项中是否有密钥.
pref.contains("myCheckBoxPreference");
Run Code Online (Sandbox Code Playgroud)
当我关闭并重新打开它时,它返回true.如果我与任务管理器关闭或关闭和打开电话,则返回false.
所以,我尝试手动设置SharedPreference
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("myCheckBoxPreference", myCheckBoxPreference.isChecked());
editor.commit();
Run Code Online (Sandbox Code Playgroud)
然后我在checkboxpreference值更改时调用了它.我也尝试在onStop和onPause中调用它.尽管如此,如果我关闭应用程序并将其重新打开,pref.contains将返回true,但如果我重新启动手机并重新打开,则返回false.
所以我尝试使用SharedPreferences文件.
在类声明中:
public static final String PREFS = "prefs";
Run Code Online (Sandbox Code Playgroud)
在onResume()中:
SharedPreferences pref = this.getSharedPreferences(PREFS, 0);
Run Code Online (Sandbox Code Playgroud)
同样的行为,如果我只是关闭应用程序并将其重新打开,pref.contains仍会返回true,但如果我关闭并重新打开手机,则返回false.
然后,我尝试myCheckBoxPreference的键值改变的东西,没有为CheckBoxPreference符合XML密钥,它仍然有同样的效果.
我从手机上卸下了应用程序,然后打开电源并重新打开,然后重新安装,它仍然具有相同的效果.
我刚刚解决了,我很确定.我的代码没有任何代码错误,我的应用程序也没有任何问题(无论如何,我不相信.)
我创建了一个名为"testproj"的新项目,然后我从我的设置PreferenceActivity中复制了所有代码,将其粘贴到TestprojActivity中,然后从它依赖的xml中复制代码,然后将其粘贴到TestProj的main.xml中.
然后我在Samsung Captivate上安装了TestProj,更改了设置,通过RAM管理(我自定义ROM的功能)清除了RAM,并且设置卡住了.然后我重新启动电话,设置仍然存在,就像我配置它们一样.
当我使用以下方法手动设置时,它们都保留了
PreferenceManager.getDefaultSharedPreferences();
Run Code Online (Sandbox Code Playgroud)
而无需手动将它们保存到SharedPreferences.
由于它不是我的手机,我还没有尝试过,但我认为工厂数据重置将完全修复它 编辑:我能够测试新的三星Captivate和三星注入,它工作.
我浪费了很多时间试图解决这个问题,我希望它可以帮助别人.:)
我在Samsung Galaxy S上遇到了类似的问题,其中首选项XML文件的权限以某种方式更改/损坏.
日志显示某些主机进程无法读取文件,导致所有设置重置为默认值.我不记得确切的错误消息,但它是"对/path/to/preferences/file.xml拒绝的权限".
我的解决方案是通过设置,应用程序,管理应用程序,MyApp,删除数据来删除应用程序数据.这将删除与应用程序关联的首选项文件,问题立即消失.
我认为这是一个孤立的事件,因为我没有在各种Android设备(包括Galaxy S II)上再次遇到它.
归档时间: |
|
查看次数: |
14680 次 |
最近记录: |