1

アクティビティ A がアクティビティ B を開始し、次に B がアクティビティ C を開始して終了する状況があります。

Intent intent = new Intent(getBaseContext(), Main.class);
intent.putExtra("GAME_TYPE", Game.MULTIPLAYER);
intent.putExtra("GAME_DATA", data.toString());
intent.putExtra("GAME_ID", gameId);
startActivity(intent);
finish();

これは通常は正常に機能し、C が前面に表示されます。ユーザーが C を閉じると、A が表示されます。

B が終了し、C が起動している間にユーザーが画面を繰り返しタップすると、問題が発生します。これにより、A がフォアグラウンドに移動し、C がバックグラウンドで正常に起動されたようです (LogCat 出力は、C が実行中であることを示しています)。

私の推測では、C が起動する前に、B が終了して A が表示され、それがタップによってフォーカスされていると思われます。これが問題の原因である可能性はありますか? そうでない場合、何ですか?これが起こらないようにし、ユーザーが乱暴にタップしても C が前面に表示されるようにするにはどうすればよいですか?

4

1 に答える 1

0

コードとxmlがどのように構成されているか正確にはわかりませんが、簡単な回避策は、onStopが呼び出された後にアクティビティAが実行されているレイアウトをクリックできないようにすることです。

私がお勧めするもう 1 つのことは、アクティビティ B がどのように終了し、C が開始されるかを確認することです。C が開始する前に B で終了を呼び出していますか? C は、遅延の原因となっている大量のデータをロードする必要がありますか? その場合は、その重いデータの一部またはすべてが読み込まれるのを待ってから、C を起動することを検討してください。

ソースコードがなければ、それ以上のことは言えません。

于 2013-01-31T19:36:31.270 に答える