【问题标题】:Is it OK to recreate activity in onRestart()在 onRestart() 中重新创建活动是否可以
【发布时间】:2011-03-12 17:20:50
【问题描述】:

我有一个包含 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());
}

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

【问题讨论】:

    标签: android tabactivity activity-lifecycle


    【解决方案1】:

    但我想知道我是否做错了什么

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

    您能否建议此方案的最佳做法?

    最佳做法是让您执行“手动 UI 更新”。将您的setupTabs() 分成两部分,一部分真正创建选项卡(从onCreate() 调用),另一部分在选项卡的小部件中填充数据(从onResume() 调用)。

    对于您的情况,可能还有更多内容,但由于您选择不解释“手动 UI 更新”有什么困难,我真的无法进一步建议您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      相关资源
      最近更新 更多