1

这是一种情况,我有一个启动服务的android活动(该服务旨在发送/接收文件等)。通过在 Activity 类对象中创建的处理程序将服务 sendMessage() 发送到 Activity。Activity 然后显示当前操作服务在其包含的视图上执行的状态。

这是问题

  1. 活动开始
  2. Activity 在全局对象中创建了 Handler
  3. Activity 启动服务 -
  4. 用户通过活动命令服务开始发送/接收文件的过程
  5. 该服务现在很忙,并且还通过通过全局对象获得的处理程序向 UI 发送消息
  6. Activity 接收并处理Message() 并在 UI 上发布状态
  7. 用户现在将我的活动发送到后台(可能是他开始使用另一个应用程序)
  8. 在此过程中,android 可能会杀死我的 Activity 但服务正忙/正在运行
  9. 同时服务结束
  10. 一段时间后,用户打开 Activity,
  11. (问题) Activity 启动 onCreate 被调用 Activity 不知道服务的最后状态。它是成功完成还是失败或任何其他状态最后状态..
4

2 回答 2

2

这取决于您启动服务的方式,您应该如何进行。

假设最简单的情况,服务在同一个进程和模式下运行START_STICKY,服务将保留在内存中,直到您stopService()从活动中调用。

在这种情况下,您可以创建一个存储服务当前状态(即未启动、运行、错误、完成等)的类级别静态变量,并从您的活动中对其进行测试。

问候。

于 2012-11-15T01:06:22.110 回答
0

SharedPreferences、SQLite、文本文件或只是静态变量或应用程序实例的变量/字段(在代码的任何位置实现应用程序的单例以获取实例)。静态变量和应用程序实例一旦被 android 杀死,就会丢失内存中的状态。

于 2012-11-15T01:06:34.810 回答