【问题标题】:Android activity restart安卓活动重启
【发布时间】:2011-05-26 05:51:32
【问题描述】:


我在重新启动活动时感到困惑。我有两个功能可以很好地完成同一任务。请指导我哪个最好,为什么?

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

提前谢谢?

【问题讨论】:

  • 你应该研究过activity的生命周期。

标签: android android-activity restart


【解决方案1】:

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

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

【讨论】:

  • +1。这就是我的想法,但无法解释为什么它比另一个更好。
  • 谢谢你..你能解释一下为什么不使用第二个选项
  • 基本上,当我们将状态保存为Activity 时,我们会调用onCreate(Bundle) 以防轮换...否则只需finish() 并再次调用intent。
  • ok Tanmay...你能解释一下在“第二个选项”的情况下可能出现的问题/错误吗??
  • @Gourav 它不会结束您当前的活动状态,也不会从活动堆栈中删除活动。
【解决方案2】:

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

更多信息见Activity

【讨论】:

  • 感谢先生您的回复,但是当我关闭正在运行的活动时,它会正常被杀死而没有表现出异常行为(在第二种情况下)...
【解决方案3】:

这是posted before

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多