我如何重新启动一个Android活动?我尝试了下面的方法,但是这个活动就是退出了。

public static void restartActivity(Activity act){

        Intent intent=new Intent();
        intent.setClass(act, act.getClass());
        act.startActivity(intent);
        act.finish();

}

当前回答

这是目前为止重启当前活动最简单的方法:

finish();
startActivity(getIntent());

其他回答

实际上,下面的代码适用于API级别5及以上,所以如果您的目标API低于这个级别,您将得到与EboMike的代码非常相似的代码。

intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
overridePendingTransition(0, 0);

调用onCreate方法。例如onCreate(null);

把Ralf和Ben的回答(包括评论中的变化)结合起来:

if (Build.VERSION.SDK_INT >= 11) {
    recreate();
} else {
    Intent intent = getIntent();
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    finish();
    overridePendingTransition(0, 0);

    startActivity(intent);
    overridePendingTransition(0, 0);
}

有一种俗气的方法适用于任何活动,包括主要活动。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

当方向改变时,Android通常会重新创建你的活动(除非你覆盖它)。当Android不重新创建你的活动时,这个方法对于180度旋转非常有用。

如果有人在找科特林的答案你只需要这句话。

片段

startActivity(Intent.makeRestartActivityTask(activity?.intent?.component))

活动

startActivity(Intent.makeRestartActivityTask(this.intent?.component))