在android中实现数据持久化

在android中实现数据持久化,android,persistence,Android,Persistence,在我的应用程序中,有一些特定于应用程序的设置,这些设置在下次启动应用程序时应该对我可用 换句话说,我希望数据在应用程序周期的会话中可用 这可以在不使用数据库(sqlite)的情况下实现。许多应用程序可以提供一种方法来捕获用户对特定应用程序或活动设置的偏好。为了支持这一点,Android提供了一组简单的API 首选项通常是名称-值对。它们可以作为“共享首选项”存储在应用程序中的各种活动中(请注意,目前无法跨流程共享)。或者它可以是特定于某个活动需要存储的内容 共享首选项:共享首选项可由应用程序之外

在我的应用程序中,有一些特定于应用程序的设置,这些设置在下次启动应用程序时应该对我可用

换句话说,我希望数据在应用程序周期的会话中可用


这可以在不使用数据库(sqlite)的情况下实现。

许多应用程序可以提供一种方法来捕获用户对特定应用程序或活动设置的偏好。为了支持这一点,Android提供了一组简单的API

首选项通常是名称-值对。它们可以作为“共享首选项”存储在应用程序中的各种活动中(请注意,目前无法跨流程共享)。或者它可以是特定于某个活动需要存储的内容

  • 共享首选项:共享首选项可由应用程序之外的所有组件(活动、服务等)使用

  • 活动处理的首选项:这些首选项只能在活动中与一起使用,不能由应用程序的其他组件使用

  • 共享首选项:

    共享首选项通过
    Context
    类的
    getSharedReferences
    方法进行管理。首选项存储在一个文件中,该文件可以是自定义文件(1)或默认文件(2)

    (1) 下面是当您要指定文件名时获取实例的方式

    public static final String PREF_FILE_NAME = "PrefFile";
       SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
    
    模式\u PRIVATE
    是首选项的操作模式。这是默认模式,意味着创建的文件将仅由调用应用程序访问。支持的其他两种模式是
    mode\u WORLD\u READABLE
    mode\u WORLD\u WRITEABLE
    。在
    模式\u WORLD\u READABLE
    中,其他应用程序可以读取创建的文件,但不能修改它。在
    MODE\u WORLD\u WRITEABLE
    的情况下,其他应用程序也对创建的文件具有写入权限

    (2) 建议使用默认模式,而不指定文件名:

    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
    
    最后,拥有preferences实例后,下面是如何从preferences中检索存储值的方法:

     int storedPreference = preferences.getInt("storedInt", 0);
    
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    int storedPreference = preferences.getInt("storedInt", 0);
    
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    prefs.edit().putString("my_pref", "my_value").commit();
    
    在首选项文件
    SharedReference.Editor
    中存储值,必须使用对象
    Editor
    SharedReference
    类的嵌套接口

    SharedPreferences.Editor editor = preferences.edit();
    editor.putInt("storedInt", storedPreference); // value to store
    editor.commit();
    
    编辑器还支持从文件中删除首选项值的方法,如
    remove()
    clear()

    活动首选项:

    共享首选项可由其他应用程序组件使用。但是,如果您不需要与其他组件共享首选项,并且希望活动具有私有首选项,则可以使用。您可以借助活动的
    getPreferences()
    方法来完成此操作。
    getPreference
    方法使用带有活动类名称的
    getSharedReferences()
    方法作为首选项文件名

    以下是获取首选项的代码:

     int storedPreference = preferences.getInt("storedInt", 0);
    
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    int storedPreference = preferences.getInt("storedInt", 0);
    
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    prefs.edit().putString("my_pref", "my_value").commit();
    
    存储值的代码也与共享首选项相同

    SharedPreferences preferences = getPreference(MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putInt("storedInt", storedPreference); // value to store
    editor.commit();
    
    您还可以使用其他方法,如在数据库中存储活动状态。注意Android还包含一个名为
    Android.preference
    的包。该包定义用于实现应用程序首选项UI的类


    要查看更多示例,请查看Android开发者网站上的帖子。

    您应该使用共享首选项:

     int storedPreference = preferences.getInt("storedInt", 0);
    
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    int storedPreference = preferences.getInt("storedInt", 0);
    
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    prefs.edit().putString("my_pref", "my_value").commit();
    
    要检索它,请执行以下操作:

    String value = prefs.getString("my_pref", "default Value");
    

    这些偏好是持久性的,并且也与偏好活动相结合。

    Thanx对于您关于该主题的详细解释:)非常好的解释。谢谢有没有办法在整个安装过程中保持持久性?@ZhouHao这对你来说可能是一个迟到的回复,但对其他人可能有用。这可以通过在外部存储器中创建一个文件来实现。不过,不要使用应用程序的数据目录,卸载时会将其删除。请阅读《开发指南》中的打字错误:“PreferenceManager.GetDefaultSharedReferences(context);”