0

ABの2つのアクティビティがあります。

AはインテントとリクエストコードでBを呼び出します-

startActivityForResult(i,123);

...後でAにBを停止させてから、それ自体を停止させたいので、AIでは

finishActivity(123);
finish();  // finish itself

...しかしBは止まらない!しかし、すべてのonStopとonDestroyにブレークポイントを設定し、デバッガーでステップスルーすると、すべてが完全に機能し、両方のアクティビティが消えます。(これはタイミングまたは競合状態を示唆しています)

ただし、Aのfinish()をコメントアウトすると...

finishActivity(123);
// finish();  // finish itself

Bは終了しますが、Aは終了しません。これは、その終了が削除されたためです。あるアクティビティを、それが作成した別のアクティビティを終了させて​​から、それ自体を終了させる正しい方法は何ですか?

前もって感謝します。

4

1 に答える 1

3

これが機能するかどうかを確認します。

finishActivity(123);
runOnUiThread(new Runnable() {
    public void run() {
        finish();
    }
});

私がこれを提案する理由は、への呼びかけがそのことをする機会をfinish()与えていないと思うからです。finishActivity(123)を呼び出すことによりrunOnUiThread、への呼び出しfinish()はUIメッセージキューの次のループで行われます。

于 2012-04-12T20:42:23.460 に答える