【问题标题】:onActivityResult is not called after process is killed进程被杀死后不调用 onActivityResult
【发布时间】:2011-06-13 08:58:29
【问题描述】:

我有一个主要活动 (Main) 和另一个从 Main 调用的活动 (Sub)

startActivityForResult(new Intent(this, SubActivity.class), 25); 

当我在 Sub 时,我终止了进程(使用任务管理器或通过 adb shell kill <pid>),然后我重新打开应用程序,我立即被带到 Sub。

在 Sub 中,我有这段代码可以回调到 Main 活动:

setResult(RESULT_OK, data);
finish();

如果我没有终止进程,我会收到 requestCode (25)、resultCode (RESULT_OK) 和 onActivityResult 上的数据。但是在这种情况下,我被带到主要活动,但 onActivityResult 没有被调用。

这是 Android 的工作方式(我没想到),还是我的方法有问题?


更新:这发生在我的 Nexus One、CyanogenMod 7.0.2、Android 2.3.3 上。我尝试使用模拟器 API 10、Android 2.3.4 并按预期工作,在我终止进程后仍然调用 onActivityResult

【问题讨论】:

  • 你是什么意思“但是在这种情况下我被带到主要活动,但 onActivityResult 没有被调用”然后调用什么?
  • 如果进程已经被杀死,则不调用Main活动的onActivityResult。 Main Activity 的 onCreate、onStart 等仍然照常调用。

标签: android android-activity activity-lifecycle


【解决方案1】:

我认为问题不是为什么不调用onActivityResult,而是为什么当你杀死你的应用程序时第二个仍然活着。有没有把 Toast 消息放在 Main 和 Sub 的生命周期方法中,只是为了检查调用了哪些方法?

【讨论】:

  • 没有。我知道在进程被杀死后,Android 将启动进程被杀死之前正在运行的最后一个活动。是的,我写日志来检查是否调用了 onActivityResult。
【解决方案2】:

我遇到了同样的问题,我解决了它,替换了将结果存储到共享首选项中的 startActivityForResult 功能,并稍后在 onResume 中加载它们。这是完整解决方案的the link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多