android保存设置和信息

android保存设置和信息,android,xml,sqlite,saving-data,Android,Xml,Sqlite,Saving Data,我是android的新手,我搜索了很多,没有找到满意的答案;我需要的是为我的应用程序保存一些设置,例如 1> 语言、要显示的项目数、显示/不显示图像等。。。 我认为最好使用共享的首选项 2> 保存要从internet获取的数据类别 我的问题是: 我将数据划分为具有键、名称、类型、数据[…]的类别对象(数据[]一直在更改,退出应用程序后不会保存),(键、名称、类型是程序员定义的最终值) 而且,由于用户可能想或不想加载许多类别(大约25个),因此他/她可以选择显示哪些类别,并且必须保存这些选择 我认

我是android的新手,我搜索了很多,没有找到满意的答案;我需要的是为我的应用程序保存一些设置,例如

1> 语言、要显示的项目数、显示/不显示图像等。。。 我认为最好使用共享的首选项

2> 保存要从internet获取的数据类别

我的问题是:

我将数据划分为具有键、名称、类型、数据[…]的类别对象(数据[]一直在更改,退出应用程序后不会保存),(键、名称、类型是程序员定义的最终值)

而且,由于用户可能想或不想加载许多类别(大约25个),因此他/她可以选择显示哪些类别,并且必须保存这些选择

我认为,由于数据的复杂性,使用共享偏好不会有帮助;我正在考虑使用sqlite或xml,但考虑到效率和内存大小,我不确定哪种是最佳选择

注意:我对类别信息数组使用了一个全局变量,这是因为数据[]需要每2-3分钟自动刷新一次,并且必须对所有活动可用,效率和内存空间也是一个问题。
如有任何建议,我将不胜感激,提前谢谢。

1>共享参考是正确的选择

2> 你有多种可能性

a) 使用内部存储并使用对象序列化(为了简单起见)、xml(如果要交换数据)或使用自己的格式

b) SQLite是最快的解决方案。但是你必须为此做更多的编程


b将是我的选择,因此创建一个DB对象(静态或单例模式)并为每个数据库任务编写函数

1)是的,共享设置应该对您有所帮助。周围有很多信息,但如果你迷路了,请发回

2) 我将创建一个包含所有类别和布尔值的表格,该布尔值表示“show”,如果用户想显示或不想显示,您可以将其保留在其中


当然,这取决于类别的大小以及它们的变化程度,否则您将永远更新数据库

存储设置中的用户共享首选项

 SharedPreferences sharedPreferences = this.applicationContext.getSharedPreferences(preferencesName, Context.MODE_PRIVATE);


    //For saving the setting:    


        //for storing long
              SharedPreferences.Editor editor = sharedPreferences.edit();
                        editor.putLong(key, value);
        //for storing string                editor.commit();
              SharedPreferences.Editor editor = sharedPreferences.edit();
                        editor.putString(key, value);
                        editor.commit();
        //and similarly for int,float etc


        //For Retrieving the string:

            sharedPreferences.getLong(key, defaultValue); //for long value 
            sharedPreferences.getSting(key, defaultValue); //for string value

非常感谢。我需要的是:启动应用程序时,我将检查类别读取标志,并相应地读取和显示数据[],同时在类别设置活动中,用户选择将读取设置为真/假并保存。但是没有修改其他变量。从我发现的情况来看:序列化-非常慢,xml会带来解析问题…我想我会同意你关于使用sqlite的建议-数据的格式最好,线程安全。此外,我还需要在未来保存一些数据在数据库中的收藏夹所选择的用户。谢谢,谢谢,;您是指使用sqlite表的表吗?对于类别的大小:key和name只需要与show标志一起保存,并且这些值不会更改。它们是由程序员设置的,不是动态的。