2011-05-26 140 views
3


我在重新开始活动时遇到困惑..我有两个功能可以很好地执行相同的任务。请指导我哪个最好,为什么?Android活动重新启动

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(); 
    } 

在此先感谢?

+0

你应该学习活动的生命周期。 – Kakey 2011-05-26 05:58:06

回答

3

我认为这是一个更清洁的方式满足您的需求。

Intent intent = getIntent(); 
    overridePendingTransition(0, 0); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
    finish(); 
    overridePendingTransition(0, 0); 
    startActivity(intent); 
+0

+1。那是我的想法,但无法解释为什么它比其他更好。 – Mudassir 2011-05-26 05:59:33

+0

谢谢你。请你解释为什么不使用第二个选项 – GouravJn 2011-05-26 06:01:21

+0

基本上,当我们保存状态'Activity'时,我们称之为'onCreate(Bundle)'以防止旋转......其他方面只是'finish() '并再次打电话给这个意图。 – 2011-05-26 06:09:57

0

系统中的活动作为活动堆栈进行管理。当一个新的活动开始时,它被放置在堆栈顶部并成为正在运行的活动 - 前一个活动始终保持在堆栈下方,并且在新活动退出之前不会再次到达前台。

更多信息请参见Activity

+0

感谢您的回复,但是当我关闭正在运行的活动时,它会正常死亡而不会显示超常的行为(如果是第二种选择)...... – GouravJn 2011-05-26 06:17:29