【问题标题】:Activity with Long running task具有长时间运行任务的活动
【发布时间】:2014-03-10 14:22:01
【问题描述】:
我正在开发一个 android 应用程序,该应用程序执行由用户调用或由警报安排的长时间运行的任务。
我已经设计成Activity->Service->AsyncTask形式的调用了。
我使用 Otto 库将 UI 更新直接从 AsyncTask 带到 Activity。
我有两个问题:
1 有没有理由我应该使用 Otto 从 AsyncTask -> Service 然后从 Service -> Activity 进行通信。我看到很多应用都使用这种模式。
2 我应该什么时候在前台运行服务?不被低内存杀死的说法可以被滥用。我想做一个有意识的决定。我相信它应该在用户手动调用而不是被警报踢时在前台运行。
【问题讨论】:
标签:
android
android-asynctask
android-service
otto
【解决方案1】:
我使用 Otto 库直接从 AsyncTask 带来 UI 更新
到活动。
请注意,事件总线可能会也可能不会按顺序(前/后)传递事件。此外,使用 Otto,您可以从另一个线程在主线程上发布事件。所以一个简单的runnable可以代替AsyncTask。
1 我有什么理由应该使用 Otto 进行通信
AsyncTask -> Service,然后从 Service -> Activity。我见过
很多应用都使用这种模式。
Some Client --> Service --> Executor queue --> 模型/数据更改 --> 广播 Otto 事件 --> 感兴趣的客户端从模型/数据更新他们的视图。
2 我应该什么时候在前台运行服务?不的论据
被低内存杀死可以被滥用。我想做一个有意识的
决定。我相信它应该在用户调用时在前台运行
手动而不是在被警报踢时。
服务应该能够在重新启动后继续存在。在启动时它检查队列中的待处理任务并恢复它们。当没有待处理的任务时它应该关闭。它应该在发布新任务时开始。