共享偏好的基本任务是什么?
当您需要应用程序存储持久数据时,本质上会使用SharedPreferences 。我考虑在不需要数据库时使用它(纯粹出于要存储的大小/数据的目的)。
实际使用时要记住什么?
您可以保存应用程序执行其任务通常需要的任何内容。例如,在游戏应用程序中,您可以存储用户的分数。但是,由于rootSharedPreferences
设备上的任何人都可以访问文件,因此您不希望存储密码。如果你绝对必须存储它们,你应该实现你自己的算法来加密它。在我的一个应用程序中,我将 URL 存储到 Facebook 和 Twitter 上用户的个人资料图片。那已经在公共领域了。
在代码中以编程方式实现它们的正确方法是什么?
如果你打算使用SharedPreference
一个或两个活动,你可以使用这样的东西来向 SharedPreference 文件添加值:
// THE SHAREDPREFERENCE INSTANCE
SharedPreferences sharedPrefs;
// THE EDITOR INSTANCE
Editor editor;
// A CONSTANT STRING TO PROVIDE A NAME TO THE SHAREDPREFERENCE FILE
private static final String PRIVATE_PREF = "some_file_name";
// INSTANTIATE THE SHAREDPREFERENCE INSTANCE
sharedPrefs = getApplicationContext().getSharedPreferences(PRIVATE_PREF, Context.MODE_PRIVATE);
// INSTANTIATE THE EDITOR INSTANCE
editor = sharedPrefs.edit();
// ADD VALUES TO THE PREFERENCES FILE
editor.putLong(UNIQUE_KEY_NAME, VALUE);
editor.putString(UNIQUE_KEY_NAME, VALUE);
editor.putString(UNIQUE_KEY_NAME, VALUE);
editor.putString(UNIQUE_KEY_NAME, VALUE);
// THIS STEP IS VERY IMPORTANT. THIS ENSURES THAT THE VALUES ADDED TO THE FILE WILL ACTUALLY PERSIST
// COMMIT THE ABOVE DATA TO THE PREFERENCE FILE
editor.commit();
要从文件中获取值:
String someString = sharedPrefs.getString(UNIQUE_KEY_NAME, null);
long someLong = sharedPrefs.getLong(UNIQUE_KEY_NAME, 0);
如果您需要重用SharedPreference
文件中的内容/值,这是一个很好的教程,关于创建一个帮助类,它可以让任意数量的Activites
人访问这些值,而不是在其中的每一个中编码上面的内容:http:// megasnippets.com/source-codes/java/sharedpreferences_helper_class_android
最后如何在使用后将它们删除?
// INSTANTIATE THE EDITOR INSTANCE
editor = sharedPrefs.edit();
// TO CLEAR A SELECT FEW OF THE VALUES:
editor.remove(KEY_FOR_THE_VALUE_TO_BE_REMOVED);
// ALTERNATIVELY, TO CLEAR ALL VALUES IN THE FILE:
editor.clear();
注意:SharedPreferences
当用户从设备的设置中手动清除应用程序数据时,您可能创建的任何文件都将被删除。
进一步阅读的链接:
- http://www.vogella.com/articles/AndroidFileBasedPersistence/article.html
- http://saigeethamn.blogspot.in/2009/10/shared-preferences-android-developer.html
- http://www.mybringback.com/tutorial-series/12260/android-sharedpreferences-example/
- http://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/