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

public static void restartActivity(Activity act){

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

}

当前回答

我就是这么做的。

        val i = Intent(context!!, MainActivity::class.java)
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
        startActivity(i)

其他回答

如果你从一些片段调用,那么做下面的代码。

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

这个解决方案对我很有效。

首先完成活动,然后再开始。

示例代码:

public void restartActivity(){
    Intent mIntent = getIntent();
    finish();
    startActivity(mIntent);
}

我想知道为什么没有人提到Intent.makeRestartActivityTask(),它清楚地说明了这个确切的目的。

创建一个可以用来重新启动应用程序任务的Intent *在它的基态。

startActivity(Intent.makeRestartActivityTask(getActivity().getIntent().getComponent()));

这个方法设置Intent。|意图。FLAG_ACTIVITY_CLEAR_TASK作为默认标志。

调用这个方法

private void restartFirstActivity()
 {
 Intent i = getApplicationContext().getPackageManager()
 .getLaunchIntentForPackage(getApplicationContext().getPackageName() );

 i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK );
 startActivity(i);
 }

谢谢,

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

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