0

私の問題は、アクティビティをそれ自体から再開する方法がわかりません。たとえば、ゲームで死亡した場合、ステージを即座に再開するためのリトライ オプションを含むメニューがあります。まさにその通りです。

この問題に関する他の多くの回答から読んだように、アクティビティをリロードするには2つの主な方法があります。

1-finish(); startActivity(getIntent());

2-recreate();

最初の方法は、アクティビティを再起動するため機能しないようですが、スタックの背面で以前に作成したものを開いたままにします。finish() ステートメントが機能していないようです。私はそれを前、後、あらゆる方法で配置しようとしましたが、取り残されたアクティビティを閉じることは決してありません.

一方、オプション番号 2 は (私の知る限り) UI スレッドの外部から呼び出すことはできず、呼び出した場合、アプリがクラッシュします。次を使用してrecreateメソッドを呼び出そうとしました:

    Activity.this.runOnUiThread(new Runnable() {
        public void run() {
            recreate();
        }
    });

しかし、このアプローチでは、画面上で非常にひどい点滅が発生します。突然黒い画面が表示されますが、それは正しくないようです。

4

2 に答える 2

4

これを試して:

    Intent intent = getActivity().getIntent();
    getActivity().finish();
    startActivity(intent);
于 2015-05-02T23:00:54.963 に答える
1

FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK次のようなフラグをインテントに追加する必要があります。

Intent intent = getActivity().getIntent();
intent.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK);
getActivity().finish();
startActivity(intent);

これにより、システムは以前のタスクをスタックから強制的に削除します。

于 2015-05-03T01:38:40.617 に答える