在Android中保留大数据

时间:2014-08-20 14:51:59

标签: android sqlite

我正在构建一个Android应用程序,该应用程序异步查询Web服务,以查找可能大小合适的数据量 - 这比我想要存储在SharedPreferences中的要多得多。最初,我每次都在考虑运行查询,但是我使用的越多,感觉就越笨拙。那么,存储这些数据并定期刷新的最佳方法是什么?

我在想一个SQLite数据库,但也许有更简单的方法吗?我真的不需要一个完整的数据库,但我会存储几个事件及其相应的数据。

另外,如果我使用数据库,那么定期更新数据库的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

我想说在这里使用数据库非常好。

考虑到定期更新,您可以采用各种策略:

  1. 启动时/用户进入相关屏幕时检查更新。如果你使用像ETag这样的东西,可以非常快。
  2. 每小时/每周/每周进行一次预定更新。可以使用SyncAdapter
  3. 之类的东西来实现
  4. 让服务器使用推送通知告诉您数据何时更改,然后更新数据。也许有一些小的随机延迟,所以并非所有客户端都会同时向服务器发出请求。
  5. 根据您是否控制服务器以及数据始终是最新的重要性,请选择最适合您需求的服务或使用组合。

答案 1 :(得分:2)

这是一个sq - LITE db,所以它不是一个成熟的Oracle集群:)。

为了初始化应用程序的数据库并开始使用它应该完成的工作量非常小,并且封装在一个类中,如:

public class DatabaseHelper extends SQLiteOpenHelper {

  public DatabaseHelper( Context ctx ) {
    super( ctx, "myapp.db", null, 1 );
  }

  @Override
  public void onCreate( SQLiteDatabase db ) {
    db.execSQL( 
      "CREATE TABLE location ( _id INTEGER PRIMARY KEY AUTOINCREMENT, lat REAL NOT NULL, lon REAL NOT NULL, name TEXT NOT NULL, locality TEXT NOT NULL,"
                              + " UNIQUE( name ) ON CONFLICT REPLACE );" );
  }

  @Override
  public void onUpgrade( SQLiteDatabase db, int oldVersion, int newVersion ) {}
}

另一个选择是使用web-clinet数据库,这通常适用于phonegap / cordova支持的应用程序。

关于更新,@ jois很好地描述了它们