如何保持数据在整个应用程序提供持久(How to keep data persistent thro

2019-09-21 03:29发布

我设计的应用程序,它需要解析大型XML并保持整个应用程序访问的序列化的数据。 我打算有一个数据对象,这将保持所存储的数据和每个组件(尽管不是每个人)都可以访问该数据。

我想这个数据是不可持久的,从而使应用程序解析XML和保存在内存中的数据。 请注意,此数据将是大(XML文件> 2MB)。 另外,我想数据当用户切换到其他应用在那里。

我已研究过可能的解决方案,如:

  • 静态对象
  • 单身
  • 扩展应用
  • 使用服务
  • 使用SQLite数据库(我不希望这样做)

我不想获得在单身无尽的争论与推广应用等,但我想这样做单元测试,以及和我听说单身和静态对象是很难测试。

任何人都可以阐明这一些轻? 什么是最优雅的方式来做到这一点?

编辑:如果该数据是持续性或不? 使它持续将意味着会,从理论上讲,是XML的一个解析,串行化它,在数据库中存储的数据,并可以使用一个对象从组件访问这些数据。 听起来怎么样?

编辑2:我想办法,我要保持数据的可访问整个应用程序是使用将存储数据的SQLite数据库。

使用XML文件,我将分析数据,并使用SQLiteOpenHelper的子类创建把它在数据库中的第一次启动。 当需要数据我会查询使用使用读访问子类中的数据库。 每个组件(活动/服务/等)将有自己的SQLiteOpenHelper的实例,以查询数据库,从而可以访问数据。 请问这个声音?

Answer 1:

这是很难给出一个答案没有更多的细节。 但我建议这些链接:

  • 我如何通过活动之间的数据在Android应用程序?
  • 如何从一个Android的活动发送对象到另一个使用意图?
  • http://developer.android.com/guide/faq/framework.html#3


Answer 2:

考虑到所有的您的问题考虑在内,我会使用共享偏好来实现你想要的。 下面是我的应用程序的示例代码:

改性为简单起见:

private static final String PREF_NAME = "MyPrefs"; //Any value would do
private static final String PREFS_LOGIN_USER= "user"; //Any value would do
private static final String PREFS_LOGIN_PASSWORD= "password"; //Any value would do

public void onCreate(Bundle bundle){
    super.onCreate(savedInstanceState);
    ....

    //Create a preference file
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

    //Put values
    SharedPreferences.Editor editor = settings.edit();
    editor.putString(PREFS_LOGIN_USER, "admin");
    editor.putString(PREFS_LOGIN_PASSWORD, "P@$$w0rd");
    editor.commit();

    //Get values
    String userName = settings.getString(PREFS_LOGIN_USER, null);
    String password = settings.getString(PREFS_LOGIN_PASSWORD, null);
}

这些值将持续存在,即使应用程序已被关闭。

顺便说一下,你也可以使用editor.remove(PREFS_LOGIN_USER)如果你想删除值。 还要求editor.commit(); 坚持变化。



Answer 3:

我想办法,我要保持数据的可访问整个应用程序是使用将存储数据的SQLite数据库。

使用XML文件,我将分析数据,并使用SQLiteOpenHelper的子类创建把它在数据库中的第一次启动。 当需要数据我会查询使用使用读访问子类中的数据库。 每个组件(活动/服务/等)将有自己的SQLiteOpenHelper的实例,以查询数据库。



文章来源: How to keep data persistent throughout the application