Android onActivityResult的确切调用时间是什么时候?

Android onActivityResult的确切调用时间是什么时候?,android,android-intent,Android,Android Intent,我的应用程序遇到了一些问题,我想确定它应该如何工作 用户输入向活动A发送意图。活动AstartActivityForResult活动B。活动B执行其工作,设置结果,然后完成。 由于环境限制,我不能 我的问题如下:A.onActivityresult在A.onDestroy之前2秒调用。我锁定了活动a,以避免启动 下面是一个简化的代码: A.onNewIntent(Intent intent) { if(!mLocked && intent.getAction()==MyI

我的应用程序遇到了一些问题,我想确定它应该如何工作

用户输入向活动A发送意图。活动A
startActivityForResult
活动B。活动B执行其工作,设置结果,然后完成。 由于环境限制,我不能

我的问题如下:
A.onActivityresult
A.onDestroy
之前2秒调用。我锁定了活动a,以避免启动

下面是一个简化的代码:

A.onNewIntent(Intent intent)
{
    if(!mLocked && intent.getAction()==MyIntent.LAUNCHB)
    {
        Log.d("A", "Locked");
        mLocked = true;
        Log.d("A", "Intent sent to B");
        startActivityForResult(intentB,BCODE); // intent is configured before
    }
}

A.onActivityResult()
{
    displayBResults();
    Log.d("A","Lock release");
    mLocked = false;
}
在B中:

B.onResume()
{
    Log.d("B","Start doing stuff");
    doSomeStuff();
    setResult(SOME_CODE);
    finish();
}

B.onDestroy()
{
    super.onDestroy();
    Log.d("B","Destroyed");
}
Logcat看起来是这样的:(时间是通常发生的事情的平均值)


在那之后,我的应用程序不再工作了。有什么建议吗?有没有办法缩小这个差距?

为什么要锁?你想阻止什么?我遇到了完全相同的问题。有进展吗?@matej.smitala在我的案例B中是某种飞溅屏幕。我设法通过B启动我的应用程序,然后在初始化完成后切换到A。这样,我将锁移到了B。如果这不是你的解决方案,也许你应该避免完成你的活动。onPause和onStop是两个回调,您可以在不破坏活动的情况下重置一些成员。希望有帮助!
00:00:00.000 A Locked
00:00:00.040 A Intent sent to B
00:00:00.440 B Start doing stuff
00:00:10.000 A Lock release
//User input during the 2-seconds gap between onActivityResult && onDestroy
00:00:11.000 A Locked
00:00:11.040 A Intent sent to B
00:00:12.000 B onDestroy