我如何重新启动一个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();
}
当前回答
这个解决方案对我很有效。
首先完成活动,然后再开始。
示例代码:
public void restartActivity(){
Intent mIntent = getIntent();
finish();
startActivity(mIntent);
}
其他回答
结合奇怪的SurfaceView生命周期行为与相机。我发现再造()在SurfaceViews的生命周期中表现不佳。在重建周期中,surfaceDestroyed从未被调用。它在onResume (strange)之后被调用,此时我的SurfaceView被销毁。
原来的重新创建活动的方式工作得很好。
Intent intent = getIntent();
finish();
startActivity(intent);
我不知道这到底是为什么,但这只是一个观察,希望可以指导其他人在未来,因为它解决了我的问题,我有与SurfaceViews
如果有人在找科特林的答案你只需要这句话。
片段
startActivity(Intent.makeRestartActivityTask(activity?.intent?.component))
活动
startActivity(Intent.makeRestartActivityTask(this.intent?.component))
如果你从一些片段调用,那么做下面的代码。
Intent intent = getActivity().getIntent();
getActivity().finish();
startActivity(intent);
public void onRestart() {
super.onRestart();
Intent intent=new Intent();
intent.setClass(act, act.getClass());
finish();
act.startActivity(intent);
}
试着用这个..
如果您删除最后一行,您将创建新的act Activity,但您的旧实例仍然是活动的。
你需要重新启动活动,就像方向改变(即你的状态被保存并传递给onCreate(Bundle))?
如果您不这样做,一种可能的解决方法是使用一个额外的虚拟Activity,它将从第一个Activity启动,该任务是启动它的新实例。或者只是在新的调用启动后延迟对act.finish()的调用。
如果您需要保存大部分状态,那么您就陷入了相当大的困境,因为通过将状态传递给新实例来传递状态的所有属性并不是一件简单的事情,特别是在不泄漏旧的Context/Activity的情况下。
请详细说明你要做什么。