0

我的问题是:我想不出一种从自身重新开始活动的方法。例如,在游戏中,如果你死了,会有一个带有重试选项的菜单,它会立即重新启动关卡。情况正是如此。

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

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

2-recreate();

第一种方法似乎对我不起作用,因为它重新启动了活动,但在我的堆栈后面保留了前一个创建的活动。看起来 finish() 语句没有做它的事情。我试图把它放在前面,后面和各种方式,但它永远不会关闭留下的活动。

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

    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 回答