0

我正在开发一个 android 应用程序,它执行由用户调用或由警报安排的长时间运行的任务。

我在Activity -> Service -> AsyncTask 形式的调用中设计了它。

我使用 Otto 库将 UI 更新直接从 AsyncTask 带到 Activity。

我有两个问题:
1 是否有理由使用 Otto 从 AsyncTask -> Service 然后从 Service -> Activity 进行通信。我见过很多应用程序使用这种模式。

2 我应该什么时候在前台运行服务?不被低内存杀死的说法可以被滥用。我想做一个有意识的决定。我相信它应该在用户手动调用而不是被警报踢时在前台运行。

4

1 回答 1

1

我使用 Otto 库将 UI 更新直接从 AsyncTask 带到 Activity。

请注意,事件总线可能会也可能不会按顺序(前/后)传递事件。此外,使用 Otto,您可以从另一个线程在主线程上发布事件。所以一个简单的runnable可以代替AsyncTask。

1 有没有理由我应该使用 Otto 从 AsyncTask -> Service 然后从 Service -> Activity 进行通信。我见过很多应用程序使用这种模式。

一些客户端 --> 服务 --> 执行队列 --> 模型/数据更改 --> 广播 Otto 事件 --> 感兴趣的客户端从模型/数据更新他们的视图。

2 我应该什么时候在前台运行服务?不被低内存杀死的说法可以被滥用。我想做一个有意识的决定。我相信它应该在用户手动调用而不是被警报踢时在前台运行。

服务应该能够在重新启动后存活。在启动时它检查队列中的待处理任务并恢复它们。当没有待处理的任务时它应该关闭。它应该在发布新任务时开始。

于 2014-03-10T14:37:08.990 回答