可以在onRestart()中重新创建活动吗

时间:2011-03-12 17:20:51

标签: android tabactivity activity-lifecycle

我有一个包含ListViews和TextViews的复杂TabActivity。而不是弄乱手动UI更新,我决定“重新创建”活动(强制完全重绘)每当涉及到前景。假设我从活动A导航到B.当回击B时,必须重新创建活动A.这是代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search);
    setupTabs();
}

@Override
protected void onNewIntent(Intent intent) {
    startActivity(intent);
    finish();
}    

@Override
protected void onRestart() {
    super.onRestart();
    onNewIntent(getIntent());
}

它有效,但我想知道我做错了什么,也许有一个更优雅的解决方案。您能为这种情况建议最佳实践吗?

1 个答案:

答案 0 :(得分:2)

  

但我想知道我做错了什么

您浪费CPU时间和电池寿命。通过强制始终从头开始重新创建活动,您将使用户体验变得更糟。

  

您能为这种情况建议最佳做法吗?

最佳做法是执行“手动UI更新”。将您的setupTabs()分成两部分,一部分真正创建标签(从onCreate()调用),另一部分填写标签中小部件中的数据(从onResume()调用)。 / p>

对于您的案例可能还有更多内容,但由于您选择不解释“手动UI更新”的难度,我无法向您提供进一步的建议。