尝试从自身重新加载Android活动不起作用
我的问题是:我想不出一个方法来重新启动我的活动本身。例如,在一个游戏中,如果你死了,有一个带有重试选项的菜单,可以立即重新启动舞台。事实就是这样 正如我从许多其他人的答案中所读到的,有两种主要的重新加载活动的方法: 1-尝试从自身重新加载Android活动不起作用,android,crash,recreate,Android,Crash,Recreate,我的问题是:我想不出一个方法来重新启动我的活动本身。例如,在一个游戏中,如果你死了,有一个带有重试选项的菜单,可以立即重新启动舞台。事实就是这样 正如我从许多其他人的答案中所读到的,有两种主要的重新加载活动的方法: 1-finish(); startActivity(getIntent()) 2-重新创建() 第一个方法似乎对我不起作用,因为它重新启动了活动,但在我的堆栈后面打开了上一个创建的方法。看起来finish()语句没有完成它的工作。我试着把它放在前面,后面,还有各种各样的方式,但它从来
finish();
startActivity(getIntent())代码>
2-重新创建()代码>
第一个方法似乎对我不起作用,因为它重新启动了活动,但在我的堆栈后面打开了上一个创建的方法。看起来finish()语句没有完成它的工作。我试着把它放在前面,后面,还有各种各样的方式,但它从来没有结束留下的活动
另一方面,无法从UI线程外部调用选项2(据我所知),如果我这样做,应用程序就会崩溃。我尝试使用以下方法调用重新创建方法:
Activity.this.runOnUiThread(new Runnable() {
public void run() {
recreate();
}
});
但这种方法让我的屏幕上出现了可怕的闪烁。突然出现一个黑屏,这似乎不正确。试试这个:
Intent intent = getActivity().getIntent();
getActivity().finish();
startActivity(intent);
试试这个:
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);
这将迫使系统从堆栈中删除上一个任务。您应该在意图中添加标志\u活动\u新任务|标志\u活动\u清除\u任务
标志,例如:
Intent intent = getActivity().getIntent();
intent.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK);
getActivity().finish();
startActivity(intent);
这将迫使系统从堆栈中删除上一个任务。谢谢您的回答。这对我来说很有效,但活动没有结束。它不断地在堆栈中添加越来越多的活动副本。看起来aldakur的答案更符合我的需要。我只是在清单上添加了一行额外的代码,以确保系统不接受该特定活动的更多实例,使用:android:launchMode=“singleInstance”
。感谢您的回答。这对我来说很有效,但活动没有结束。它不断地在堆栈中添加越来越多的活动副本。看起来aldakur的答案更符合我的需要。我只是在清单上添加了一行额外的代码,以确保系统不接受该特定活动的更多实例,使用:android:launchMode=“singleInstance”
。