我正在尝试找出访问多个Web服务并具有多个活动的应用程序的最佳通用设计。我的最新Android应用程序的实现方式如下:我有一个IntentService,它接收来自活动的请求以从Web服务获取信息。我的Service通过ResultReceiver通知活动请求的状态(已启动/错误/已完成)。在调用Web服务、获取结果(XML / JSON)并解析后,我将该信息放入ContentProvider(由SQLite数据库支持),并使用ContentResolver通知任何活动进行更改。活动会被通知更改(一些使用ContentObserver,其他使用SimpleCursorAdapter并自动通知)。现在,我的方法存在以下问题:
每次进入一个活动时,我通过上述方法从Web服务请求信息,并删除该特定表中的所有行,填充新信息并通知活动。因此,如果用户按返回键然后再次进入,我会再次执行整个操作。我认为我应该在数据库中添加一些字段以记录最后更新时间等,但我不知道如何确切地进行操作。有什么建议吗?我认为另一种选择是使用闹钟,在特定时间间隔内触发更新。但在我的情况下,规范要求每次进入活动时都要检查Web服务。
当我调用Web服务时,我在活动中显示一个不确定的进度条,覆盖其他视图(其中包含以前提取的信息并保存在数据库中直到Web服务调用完成),但用户可以开始与视图交互,这不好(信息可能会从数据库中消失)。有什么方法可以禁用此交互?ProgressDialog是一个好选择。
如果我快速移动到不同的活动,则IntentService会被阻塞以前的Web服务调用,需要更长时间才能到达我的最新Web服务调用。我可以为每个Web服务创建多个IntentService,但我认为这并不是它的目的。
我有一种感觉,我采取的方法实际上并不是这个特定应用程序的最佳方法。它部分地受到Google I/O应用程序的启发(我无法理解所有内容,例如更新的SQLite字段等)。一个替代方案是在所有活动中使用AsyncTasks。但是,我在哪里存储信息以便从其他活动访问?在Application的列表中吗?ID管理如何处理?
我非常感兴趣听取您的意见/想法/建议以及如何使我的下一个应用程序工作得更好、更有效率。
每次进入一个活动时,我通过上述方法从Web服务请求信息,并删除该特定表中的所有行,填充新信息并通知活动。因此,如果用户按返回键然后再次进入,我会再次执行整个操作。我认为我应该在数据库中添加一些字段以记录最后更新时间等,但我不知道如何确切地进行操作。有什么建议吗?我认为另一种选择是使用闹钟,在特定时间间隔内触发更新。但在我的情况下,规范要求每次进入活动时都要检查Web服务。
当我调用Web服务时,我在活动中显示一个不确定的进度条,覆盖其他视图(其中包含以前提取的信息并保存在数据库中直到Web服务调用完成),但用户可以开始与视图交互,这不好(信息可能会从数据库中消失)。有什么方法可以禁用此交互?ProgressDialog是一个好选择。
如果我快速移动到不同的活动,则IntentService会被阻塞以前的Web服务调用,需要更长时间才能到达我的最新Web服务调用。我可以为每个Web服务创建多个IntentService,但我认为这并不是它的目的。
我有一种感觉,我采取的方法实际上并不是这个特定应用程序的最佳方法。它部分地受到Google I/O应用程序的启发(我无法理解所有内容,例如更新的SQLite字段等)。一个替代方案是在所有活动中使用AsyncTasks。但是,我在哪里存储信息以便从其他活动访问?在Application的列表中吗?ID管理如何处理?
我非常感兴趣听取您的意见/想法/建议以及如何使我的下一个应用程序工作得更好、更有效率。