【问题标题】:Fetching data from server (mysql databse) to android application and saving it into sqlite database从服务器(mysql数据库)获取数据到android应用程序并将其保存到sqlite数据库中
【发布时间】:2014-01-02 05:13:46
【问题描述】:

我正在做一个项目,我必须在服务器上的 mysql 数据库中获取数据表。现在我必须在我的 android 应用程序中插入这些表。

我已经使用Json Parsing 和asynctasksqlitedatabase 成功实现了该功能,我已经编写了php 代码,通过它我可以从mysql 服务器获取数据到我的应用程序。

这种方法的问题:

  1. 时间:当我在 Launcher Activity 中从服务器获取该数据时,我的 Activity 开始并需要大约 10 分钟才能从服务器获取所有数据。我想缩短那个时间,我不想耽误那么多时间,5-10秒就可以了
  2. 每次我的应用程序启动时,它都会进入该获取模式。这导致 10 分钟的加载页面。 我不想要这个,我想要检查服务器上存在的数据库更改的东西,如果有更改,那么它应该开始在后台本身获取。我正在考虑使用警报管理器提供服务,但我不知道如何通过服务来实现所有这些。我应该在服务中使用 asyncTask 还是其他。

我不确定这个细节是否足够,但如果需要我会给你详细的解释。对此的任何帮助将不胜感激,如果我的方法是错误的,那么我会更乐意将我的方法更改为优化的方式。

【问题讨论】:

  • 是否需要进行所有数据加载才能启动您的应用程序?还是可以在后台任务中完成?这样用户就可以在数据成型时继续使用您的应用涂鸦?
  • 每一条下载数据都会在我的下一个活动中使用,所以我想我必须先下载所有数据。如果数据不存在,用户将无法执行任何操作。
  • 数据的大概大小是多少?
  • 那么如果用户的数据连接速度超过 10 MBPS 那么就有可能在 10 秒内完成工作:(
  • 相反,您可以使用标志值来实现。在后台下载任务中维护标志,让用户界面空闲,并在用户采取下一步行动之前检查任务是否完成。

标签: android mysql json performance android-asynctask


【解决方案1】:

使用 Java 线程 代替 AsyncTask。在线程中您无法访问 UI。但是从性能角度来看,Java 线程对于下载大数据非常有效。

线程的一些好处:

  • 涉及中到大量数据的网络操作 (上传或下载)
  • 需要运行的高 CPU 任务 在后台。

【讨论】:

  • 到底有多快?下载数据不是唯一的问题,我还必须将数据存储在我的 sqlite 数据库中。
  • 获取和插入我的 sqlite 数据库的总时间是 6-10 分钟,
  • 看@bangrang 基于网络速度只有你可以下载或上传数据为您的方便...我的解决方案是在android中访问Web服务器数据的有效方式。
  • 我知道我可以通过高速更快地做到这一点,但这里不仅关乎速度,还关乎方法。
  • @bangrang K..Thread 不会影响您的 UI。因此,下载和存储在 sqlite 中的性能都很快。它消耗的时间间隔更少。这就是我建议线程的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-07
  • 2010-10-03
  • 2019-01-17
  • 1970-01-01
  • 2014-07-04
相关资源
最近更新 更多