【问题标题】: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 我应该什么时候在前台运行服务?不的论据 被低内存杀死可以被滥用。我想做一个有意识的 决定。我相信它应该在用户调用时在前台运行 手动而不是在被警报踢时。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2012-08-13
    • 2022-01-01
    相关资源
    最近更新 更多