0

アプリケーションでいくつかの問題が発生しており、アプリケーションがどのように機能するかを確認したいと思いました。

ユーザー入力は、アクティビティAにインテントを送信します。アクティビティAstartActivityForResultはアクティビティBです。アクティビティBはその作業を実行し、結果を設定してから終了します。環境の制約により、私は持つことができません

私の問題は次のとおりです:のA.onActivityresult2秒前に呼び出されA.onDestroyます。開始を避けるために、アクティビティ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はそのように見えます:(時間は通常起こることの平均です)

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

その後、私のアプリは動作しなくなります。なにか提案を ?このギャップを減らす方法はありますか?

4

0 に答える 0