是否可以在 onRestart() 中重新创建 Activity

发布于 2024-10-22 01:27:20 字数 574 浏览 2 评论 0原文

我有一个复杂的 TabActivity,其中包含 ListView 和 TextView。我决定在前台时“重新创建”活动(强制完全重绘),而不是搞乱手动 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());
}

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

I have a complex TabActivity that contains ListViews and TextViews. Instead of messing up with manual UI update I decided to "recreate" activity (force full redraw) whenever it comes to foreground. Assume that i navigate from activity A to B. When hit back on B, activity A must be recreated. Here is the code:

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

It works, but i wonder if i am doing something wrong, maybe there is a more elegant solution. Could you please suggest best practice for this scenario?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

許願樹丅啲祈禱 2024-10-29 01:27:20

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

你正在浪费CPU时间和电池寿命。强制 Activity 始终从头开始重新创建会让用户体验变得更糟。

您能否建议针对此场景的最佳实践?

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

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

but i wonder if i am doing something wrong

You are wasting CPU time and battery life. You are making the user experience worse by forcing the activity to be always recreated from scratch.

Could you please suggest best practice for this scenario?

The best practice would be for you to perform a "manual UI update". Divide your setupTabs() into two pieces, one that truly creates the tabs (called from onCreate()) and one that fills in the data in the widgets in the tabs (called from onResume()).

There may be more to it for your case, but since you elected not to explain what is so difficult about the "manual UI update", I cannot really advise you further.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文