我正在试图弄清楚什么是访问多个Web服务的应用程序的最佳通用设计,并且具有显示信息的多个活动.
我实现最新Android应用程序的方式如下.我有一个IntentService接收来自活动的请求以从Web服务获取信息.我Service通过ResultReceiver关于请求的状态(已启动/错误/已完成)通知活动.在调用Web服务,获取结果(xml/json)并解析它之后,我将该信息放入ContentProvider(由sqlite数据库备份)并使用a ContentResolver来通知任何有关更改的活动.活动会收到有关更改的通知(一些使用ContentObserver和其他使用SimpleCursorAdapters并自动通知).
现在,我的方法存在问题:
IntentService为每个Web服务创建多个,但我不认为这是它的目的.我觉得我采用的方法对于这个特定的应用来说并不是最好的方法.它部分受到Google I/O应用程序的启发(我无法理解所有内容,例如更新的sqlite字段等).一种替代方法是在所有活动中使用AsyncTasks.但是,我可以在哪里存储信息以便从其他活动中访问?在列表中Application?id管理怎么样?
我真的对您的意见/想法/建议感兴趣,如何让我的下一个应用程序更好,更有效地工作.
你查过这个谈话吗?http://www.youtube.com/watch?v=xHXn3Kg2IQE
我发现它是一个很好的灵感来源。基本上,他们建议将服务助手(在您的情况下,您的意图服务的服务助手)构建为单例类。您可以跟踪正在进行的请求
通过这种方式,您可以跟踪您正在执行的每种不同类型的正在进行的后台任务,并阻止任何其他同类请求。例如,如果您离开活动 a 并进入活动 b,并且它们请求相同的 Web 服务查询,则您可以检查它是否由于活动 a 而仍在进行中。
从我在 iosched 应用程序上看到的情况来看,它会遇到以下问题:如果活动关闭,则获取结果会丢失。
有一个明确的日志说:
Log.w(TAG, "Dropping result on floor for code " + resultCode + ": "
+ resultData.toString());
我不建议也使用 asynctask,因为结果也会丢失。
不过,请看一下演讲和幻灯片。
| 归档时间: |
|
| 查看次数: |
3842 次 |
| 最近记录: |