当主机 Activity 不活动时处理数据的最佳方法是什么

what is best approch to handle data when host Activity is not active

我有四个 activity Activity1、Activity2、Activity3、Activity4。 Activity2 有一些我们需要与服务器通信的操作,这意味着我们将发送一些请求并根据请求响应。

  1. 我在 Activity2 中单击将与服务器通信的按钮。
  2. 现在我转到 Activity3 和 Activity4。
  3. 服务器和客户端(android 设备)之间的通信仍在后台进行。
  4. 当我在 Activity4 时,Activity2 后台进程完成。
  5. 现在我从 Activity4 回到 Activity3 和 Activity2。
  6. 现在我想要,响应应该出现在 Activity2 的后台进程中。

这种用例应该采用什么方法?

在活动 2 中点击按钮:

1) 使用AsynchTask获取数据。

2) 使用 startActivityForResult 启动活动 3.

3) 和 onActivityResult 你可以检查你的结果

你可以用一个Service来实现,当你点击按钮时,你启动一个Intent到Service来启动后台任务,此时你的app和网络任务运行异步地,您可以移动到下一个活动并进行所需的一切,在 Activity 2 的 onResume 方法中,您可以使用 Intent 询问服务的状态,如果任务完成,您可以检索响应服务启动 Intent 并将其缓存到 onNewIntent 方法的 Activity 2 中。在服务中,您需要一个地方来保存任务的响应,您可以选择如何保存(SQLite、SharedPreferences、文件等)并且只检索响应。您只需要考虑在服务中处理请求、存储和检索对应用程序的响应的逻辑。

嗯,我猜的,我可以告诉你怎么处理,

1) 在 Activity 2 use seperate thread apart from UIThread 中进行服务器操作时,一旦启动并行线程将占用自己的时间,并且在服务器进程结束后使用 3 storage modes(sdcard,sqlite,sharedpref) 中的任何一个来存储你的数据 ,

2) 你可能知道一旦你的 activity 3 启动,activity2 将是 paused(onPause),然后是 stopped (onStop) 并且将在你的堆栈中保持活动状态,

3)一旦你从activity 3回来,使用onResume取回保存的数据并使用它...