关于将数据从服务器数据库复制到android设备sqlite的建议

时间:2015-07-15 04:57:59

标签: php android mysql sqlite

我正在为推销员开发Android应用,因此他们可以使用他们的设备来保存订单。具体来说,每天早上销售员都会去办公室并获取当天的数据。

目前,我可以通过向php文件发送请求来获取数据,并且像通常的做法一样,我们会将这些数据插入Android中的sqlite,以便它可以脱机工作。但是,使用当前方法,设备需要6-8秒才能获取数据并将这些数据插入sqlite。随着数据量的增长,我认为这会让它变得更慢。我发现将数据插入sqlite的过程需要相当长的时间。

所以,我一直在考虑将销售人员所需的所有数据转储到sqlite文件中,因此我只能发送我认为更有效的文件。你能告诉我如何做到这一点吗?或者还有其他方法可以解决这个问题吗?

注意:

  • 服务器数据库:Mysql
  • 服务器:PHP

2 个答案:

答案 0 :(得分:0)

你可以在这里采用不同的方法来实现加载速度:

  1. 如果您的数据可以预先加载apk,您可以将它们存储在.apk中,当用户下载应用程序时,它会在那里,您只需要调用剩余的更新数据。

    < / LI>
  2. 如果您每次都需要刷新数据,您可以在多次调用中从服务器调用数据块,这将在数据库中获取和存储数据并在UI上进行更新。

  3. 如果数据不是太多,(我说,如果有200-300个数据,我们不应该考虑更多)你可以做一些简单的事情: 当你调用网络调用来获取数据时,你应该将这些数据对象传递给数据库进行存储并同时(在存储到db之前),只需将整个列表对象返回到Activity / Fragment,这样它就会有数据,你可以向用户查看这些数据,同时它将存储在数据库中。

  4. 另外,你可以在side sqlite中使用no-sql,所以你不需要每次都解析对象(与no-sql比较昂贵)并将所有数据存储在sql中作为整个对象,只要需要,只需从db获取并根据需要解析它。

答案 1 :(得分:0)

感谢@Skynet提及交易,它确实改进了这个过程。所以我现在仍然坚持这种方法..

你可以这样做:

db.beginTransaction();
try {
    saveCustomer();
    db.setTransactionSuccessful();
} catch {
    //Error in between database transaction 
} finally {
    db.endTransaction();
}

有关详细说明:Android Database Transaction ..