安卓活动重启

3
我在重新启动一个活动时感到困惑。我有两个功能可以完成相同的任务,请指导我哪个更好,为什么?
public void restart()   
    {  
        Intent intent = getIntent();  
        overridePendingTransition(0, 0);  
        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);  
        finish();  
        overridePendingTransition(R.anim.fade,R.anim.fade);
        startActivity(intent);

    }

或者

public void restart()   
    {         
        onCreate();  
    }  

提前感谢?


你应该学习活动生命周期。 - Kakey
3个回答

3
我认为这是满足您需求的更加简洁的方法。
    Intent intent = getIntent();
    overridePendingTransition(0, 0);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    finish();
    overridePendingTransition(0, 0);
    startActivity(intent);

+1。这就是我想的,但无法解释为什么它比其他方法更好。 - Mudassir
谢谢您。您能否解释一下为什么不使用第二个选项? - GouravJn
基本上,当我们保存Activity的状态时,在旋转的情况下会调用onCreate(Bundle)...否则只需调用finish()并再次调用意图。 - Tanmay Mandal
好的Tanmay...你能否解释一下“second opinion”可能出现的问题或错误吗? - GouravJn
@Gourav 它不会结束您当前的活动状态,也不会将该活动从活动堆栈中移除。 - Tanmay Mandal

0

这个已经之前发布过

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

0
系统中的活动被管理为一个活动堆栈。当启动新活动时,它会被放置在堆栈顶部并成为正在运行的活动 - 以前的活动始终保留在其下方,并且直到新活动退出后才会再次出现在前台。
要了解更多信息,请参见Activity

感谢您的回复,但是当我关闭正在运行的活动时,它通常会被杀死,而不会显示任何异常行为(在第二个选项的情况下)。 - GouravJn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接