我遇到了一个非常奇怪的问题,这个问题只发生在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));
在安卓16上,我得到了一个空套,但在27上,一切都很好
可能是什么?
您的问题可能是由于:
System.exit(1);
你不应该从应用程序调用它。这将立即终止您的流程,所以您遇到意外行为并不让我感到惊讶。您可能会在进程将您的更改提交到磁盘之前将其扼杀。在较新的设备上,它可能足够快,你可以避免这个问题。
当您希望应用程序的UI被取消时,无论您从哪个"活动"运行此代码,都应该简单地调用finish()
,而不是试图终止您的进程。