我如何重新启动一个Android活动?我尝试了下面的方法,但是这个活动就是退出了。
public static void restartActivity(Activity act){
Intent intent=new Intent();
intent.setClass(act, act.getClass());
act.startActivity(intent);
act.finish();
}
我如何重新启动一个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)
其他回答
调用onCreate方法。例如onCreate(null);
调用这个方法
private void restartFirstActivity()
{
Intent i = getApplicationContext().getPackageManager()
.getLaunchIntentForPackage(getApplicationContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK );
startActivity(i);
}
谢谢,
这是目前为止重启当前活动最简单的方法:
finish();
startActivity(getIntent());
实际上,下面的代码适用于API级别5及以上,所以如果您的目标API低于这个级别,您将得到与EboMike的代码非常相似的代码。
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
overridePendingTransition(0, 0);
有一种俗气的方法适用于任何活动,包括主要活动。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
当方向改变时,Android通常会重新创建你的活动(除非你覆盖它)。当Android不重新创建你的活动时,这个方法对于180度旋转非常有用。