尝试从自身重新加载 Android activity 无效

Trying to reload an Android activity from itself not working

我的问题是:我想不出一种方法来从自身重新启动 activity。例如在游戏中,如果你死了,有一个菜单可以重试,它会立即重新启动舞台。原来如此。

正如我从其他很多关于这个问题的答案中读到的,有两种主要方法可以重新加载 activity:

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

2- recreate();

第一种方法似乎对我不起作用,因为它会重新启动 activity,但会在我的堆栈后面让之前创建的方法保持打开状态。看起来 finish() 语句没有做它的事情。我试过将它放在前面、后面和各种方式,但它永远不会关闭留下的 activity。

另一方面,无法从 UI 线程外部调用选项编号 2(据我所知),如果调用,应用程序会崩溃。我尝试使用以下方法调用重新创建方法:

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

但是这种方法让我在屏幕上闪烁得非常糟糕。突然出现黑屏,好像不太对。

试试这个:

    Intent intent = getActivity().getIntent();
    getActivity().finish();
    startActivity(intent);

您应该向意图添加 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);

这将强制系统从堆栈中删除之前的任务。