2

アプリケーションには 3 つの最上位レベルのアクティビティがあります。アクティビティ A、B & C。

これらの各アクティビティは、ナビゲーション ドロワーをホストします。これら 3 つのアクティビティ間でアクティビティ スタックを管理する最善の方法を見つけようとしています。

たとえば、アプリケーションを起動すると、Activity A が起動されます。アクティビティ A には、アクティビティ B & C のようなナビゲーション ドロワーがあります。ドロワーでアクティビティ B をクリックすると、アクティビティ B が起動し、ドロワーでアクティビティ C をクリックすると、アクティビティ C が起動します。

ドロワーがバックエンド サービスからデータをロードするため、ドロワーが新しいアクティビティを起動するときにこれらのアクティビティを終了したくありません。また、戻るボタンをクリックすると、アプリケーションをバックグラウンドに送りたいと思います。

基本的に、アクティビティが存在しない場合は起動し、存在する場合は再開する方法を探しています。どうすればこれを達成できますか?

4

1 に答える 1

0

アクティビティからデータを取得することを切り離すことが最善の選択肢だと思います。

次の段落はTasks and Back Stackからのものです。

バック スタック内のアクティビティは再配置されないため、アプリケーションでユーザーが複数のアクティビティから特定のアクティビティを開始できる場合、そのアクティビティの新しいインスタンスが作成され、スタックにプッシュされます (アクティビティの以前のインスタンスを持ち込むのではなく)。頂点に)。そのため、図 3 に示すように、アプリケーション内の 1 つのアクティビティが (異なるタスクからであっても) 複数回インスタンス化される場合があります。そのため、ユーザーが [戻る] ボタンを使用して後方に移動すると、アクティビティの各インスタンスが表示された順序で表示されます。開かれました (それぞれ独自の UI 状態を持ちます)。

したがって、あなたの場合、アプリが非同期タスクの使用を開始したときにバックグラウンドでデータを取得し、それらをデータベースに保存すると、うまくいく可能性があります。

それを行う1つの方法は次のとおりです。

ホーム アクティビティの作成時に、プログレス バーを表示しながら、非同期タスクを介してホーム アクティビティのデータをすばやく取得します。出来上がったら収納してディスプレイ。次に、他のアクティビティのデータの非同期タスクを起動します。難しい条件もあります。たとえば、データの準備が整う前にユーザーがすぐにアクティビティ B または C に切り替えた場合は、プログレス バーを表示する必要があります。

DB を使用したくない場合は、おそらくシングルトンを使用することでニーズに合うかもしれません。データのサイズによっては、データを分割してバンドルを介して渡すことも、優れた手法であることが判明する場合があります。

于 2016-01-26T06:26:36.347 に答える