我有一个很奇怪的问题,只发生在android 16上而不发生在android 27上[我没有测试其他版本来检查它的开始位置
SharedPreferences.Editor edit = PreferenceManager.getDefaultSharedPreferences(getApplication()).edit();
edit.putBoolean(getString(R.string.pref_custom_list), false);
edit.putStringSet(getString(R.string.pref_username_list_, getCurrentUser().getAuth().getUserId()), imported);
edit.commit();
System.exit(1);
导入的是Set<String>
当我重新启动应用程序并尝试阅读
时 final SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this.getApplication());
final Set<String> cachedList = pref.getStringSet(getString(R.string.pref_username_list_, userid), new HashSet<String>(APIFacade.CACHE_SIZE));
在android 16上,我得到了一个空集,但在27上,一切都很好
可能是什么?
答案 0 :(得分:0)
您的问题可能是由于:
System.exit(1);
您不应该从应用程序中调用它。这将立即终止您的过程,因此您遇到意外行为也就不足为奇了。您可能先终止该进程,然后才能将更改提交到磁盘。在更新的设备上,它可能足够快,您可以避免此问题。
无论您要运行应用程序的用户界面而不是尝试终止您的过程,只要您运行此代码的任何活动都应仅调用finish()
。