Android加载一些数据的战略决策(API vs SQLite)-何时以及如何加载

Android加载一些数据的战略决策(API vs SQLite)-何时以及如何加载,android,mysql,sqlite,Android,Mysql,Sqlite,我有一个我正在使用的android应用程序,它通过API连接到服务器,并获取以下数据集: 类别 子类别 国家 在应用程序中的多个位置使用,它们在应用程序的整个生命周期中保持不变,并且永不更改。它们不会被修改 我有downloader类,在需要这些数据集的活动中,我有数据下载时的侦听器 我进入了“搜索项目”活动,我有三个微调器——类别、子类别和国家微调器,我开始思考——我将在这里运行三个下载任务和三个不同的侦听器。可以吗 如果我在应用程序加载时运行downloader任务,并将这些数据集放入本

我有一个我正在使用的android应用程序,它通过API连接到服务器,并获取以下数据集:

  • 类别
  • 子类别
  • 国家
在应用程序中的多个位置使用,它们在应用程序的整个生命周期中保持不变,并且永不更改。它们不会被修改

我有downloader类,在需要这些数据集的活动中,我有数据下载时的侦听器

我进入了“搜索项目”活动,我有三个微调器——类别、子类别和国家微调器,我开始思考——我将在这里运行三个下载任务和三个不同的侦听器。可以吗

如果我在应用程序加载时运行downloader任务,并将这些数据集放入本地SQLite数据库,可能会是一个更好的决定。 若然,原因为何

这两种做法中哪一种更常见?

简单的回答是“视情况而定”。你的问题没有完全解释数据的用途,而这正是你如何使用数据的原因

所以很明显,它必须来自服务器。。。你提到有多个听众。这很好,而且通常是多个异步提要的使用方式。但是,如果您不确定这是如何工作的,则很容易导致计时错误或代码无效。如果可能的话,考虑使用一个框架来管理你的Web请求,因为它通常是简单和高效的。 一旦你有了数据,接下来的问题就是你想用它做什么。你肯定不想再次提出请求,所以你的想法是正确的。但您可能根本不需要将其存储在数据库中;如果数据是会话范围的(也就是说,用户现在只需要它,并且当他们再次使用它时需要更新的数据),那么您可以将数据对象保留在内存中,然后在用户重新启动应用程序时从服务器重新获取它们

但是,如果数据不经常更改,将其存储在本地可能不是一个坏主意,因为这样可以防止不必要的数据请求。在Android上,sqlite数据库将是一种很好的方法

tl;博士说,你的两个“选择”并不是真的相互竞争;仔细查看您的目标,并决定何时适合您的应用程序发出数据请求(越早越好),以及是否适合您的应用程序将数据存储在sqldatabase中