【问题标题】:what is best approch to handle data when host Activity is not active主机活动不活动时处理数据的最佳方法是什么
【发布时间】:2015-02-16 15:09:51
【问题描述】:

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

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

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

【问题讨论】:

    标签: android view background-process


    【解决方案1】:

    在Activity2上点击按钮:

    1) 使用AsynchTask 获取数据。

    2) 使用 startActivityForResult 启动 activity3。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        嗯,这是我的猜测,我可以告诉你如何处理它,

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

        2) 您可能知道一旦您的活动 3 开始,活动 2 将是 paused(onPause) ,然后是 stopped (onStop) 并将在您的堆栈中保持活动状态,

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

        【讨论】:

          猜你喜欢
          • 2015-04-06
          • 1970-01-01
          • 2017-10-13
          • 2023-03-12
          • 1970-01-01
          • 1970-01-01
          • 2011-02-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多