什么';“这是最好的方法”;“应用程序设置”;在Android中?

什么';“这是最好的方法”;“应用程序设置”;在Android中?,android,Android,我想为Android应用程序存储一些应用程序设置(比如API的URL和一些测试设置) 我主要是作为开发人员工作的,因此我习惯于使用文件app.config。在Android中,什么是一种好方法?许多应用程序可能提供一种方法来捕获用户对特定应用程序或活动设置的偏好。为了支持这一点,Android提供了一组简单的API 首选项通常是名称-值对。它们可以作为“共享首选项”存储在应用程序中的各种活动中(请注意,目前无法跨流程共享)。或者它可以是特定于某个活动需要存储的内容 共享首选项:共享首选项可由应用

我想为Android应用程序存储一些应用程序设置(比如API的URL和一些测试设置)


我主要是作为开发人员工作的,因此我习惯于使用文件
app.config
。在Android中,什么是一种好方法?

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

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

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

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

  • 共享首选项:

    共享首选项通过
    Context
    类的
    getSharedReferences
    方法进行管理。首选项存储在默认文件(1)中,或者您可以指定用于引用首选项的文件名(2)

    SharedPreferences preferences = getPreference(MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putInt("storedInt", storedPreference); // value to store
    editor.commit();
    
    (1) 下面是指定文件名时获取实例的方式

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

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

    public static final String PREF_FILE_NAME = "PrefFile";
       SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
    
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
    
    最后,拥有preferences实例后,下面是如何从preferences中检索存储值的方法:

     int storedPreference = preferences.getInt("storedInt", 0);
    
    在首选项文件
    SharedReference.Editor
    中存储值,必须使用对象
    Editor
    SharedReference
    类的嵌套接口

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

    活动首选项:

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

    下面是获取首选项的代码

    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    int storedPreference = preferences.getInt("storedInt", 0);
    
    存储值的代码也与共享首选项相同

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


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

    谢谢。看起来我需要做的是使用一个XML文件来完成我的目标(或者可能我使用XML作为初始加载的数据),但是首选项对于我的项目的另一部分很有用。您可以将XML文件用于init。您需要调用类似于
    PreferenceManager.setDefaultValues的东西(this,R.xml.profiles\u preferences,false)此指南也可能有用:+1。只需要记住一点点。在
    preferences
    对象中设置值后,建议调用
    editor.apply()
    而不是
    editor.commit()
    ,因为前者将处理后台保存。我在这里有点困惑。SharedReferences用于在应用程序上存储用户设置,而不是应用程序设置。用户(我也是)想知道在哪里存储应用程序设置、ex API url或应用程序正常工作所使用的其他设置。