关闭。这个问题需要更多 focused .它目前不接受答案。
想改进这个问题?更新问题,使其仅关注一个问题 editing this post .
3年前关闭。
Improve this question
我试图弄清楚对于访问多个 Web 服务并具有多个显示信息的 Activity 的应用程序的最佳通用设计是什么。
我实现最新的 Android 应用程序的方式如下。我有一个 IntentService
接收来自 Activity 的请求以从 Web 服务获取信息。我的 Service
通过 ResultReceiver
通知 Activity 关于请求的状态(开始/错误/完成)。调用 Web 服务,获取结果(xml/json)并解析后,我将这些信息放在 ContentProvider
中。 (由 sqlite 数据库备份)并使用 ContentResolver
通知有关更改的任何 Activity 。 Activity 会收到有关更改的通知(一些使用 ContentObserver
和其他使用 SimpleCursorAdapter
并自动收到通知)。
现在,我的方法存在的问题:
IntentService
对于每个网络服务,但我认为这不是它的目的。 我觉得我所采取的方法对于这个特定的应用程序来说并不是最好的方法。它的部分灵感来自 Google I/O 应用程序(我无法理解所有内容,例如更新的 sqlite 字段等)。一种替代方法是在所有 Activity 中使用 AsyncTasks。但是我可以在哪里存储信息以便从其他 Activity 中访问?在
Application
的列表中?以及身份管理呢?我对您的意见/想法/建议非常感兴趣,以及如何使我的下一个应用程序更好、更有效地工作。
最佳答案
你检查过这个谈话吗? http://www.youtube.com/watch?v=xHXn3Kg2IQE
我发现它是一个很好的灵感来源。
基本上,他们建议构建一个服务助手(在你的情况下,你的 Intent 服务的服务助手)作为一个单例类。您可以跟踪正在进行的请求
通过这种方式,您可以跟踪正在执行的每一种不同类型的正在进行的后台任务,并阻止任何其他同类请求。例如,如果您离开 Activity a 并进入 Activity b,并且他们要求相同的 Web 服务查询,您可以检查它是否由于 Activity a 仍在进行中。
从我在 iosched 应用程序上看到的情况来看,如果 Activity 关闭,则获取结果会丢失。
有一个清晰的日志说:Log.w(TAG, "Dropping result on floor for code " + resultCode + ": "
+ resultData.toString());
我也不建议使用 asynctask,因为结果也会丢失。
但是,请看一下演讲和幻灯片。
关于android - 通用应用程序设计(IntentService/ContentProvider/AsyncTask),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4322819/