3

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

それはうまくいきますが、何か間違ったことをしているのだろうか、もっとエレガントな解決策があるかもしれません。このシナリオのベスト プラクティスを教えてください。

4

1 に答える 1

2

しかし、私は何か間違ったことをしているのだろうか

CPU 時間とバッテリー寿命を浪費しています。アクティビティを常にゼロから再作成することを強制することで、ユーザー エクスペリエンスを悪化させています。

このシナリオのベスト プラクティスを教えてください。

ベスト プラクティスは、「手動 UI 更新」を実行することです。setupTabs()1 つは実際にタブを作成する部分 ( から呼び出される)onCreate()と、タブ内のウィジェットにデータを入力する部分 ( から呼び出されるonResume()) です。

あなたの場合にはさらに多くのことがあるかもしれませんが、「手動 UI 更新」の何がそれほど難しいのかを説明しないことを選択したため、これ以上アドバイスすることはできません.

于 2011-03-12T17:29:10.790 に答える