2016-11-10 6 views
0

最近私はソーシャルアプリを作成しました。私は断片を使わなかったし、プロジェクトはほぼ終わった。私はUserProfile、Followers、Followingsのようないくつかのアクティビティを持っています。スタック内のアクティビティが多すぎるとアプリがかなり遅くなります

通常は正常です。 UserA UserProfileアクティビティをクリックしてからAのフォロワーをクリックし、UserB Userprofileアクティビティを選択し、BのフォロワーアクティビティをクリックしてUserC Userprofileアクティビティを選択します。

このループでは、これは同時に多数のアクティビティを開いてしまい、バックスタックがそれらのすべてを保持しているためです。

私はこのような状況のためにできる最適化があるのだろうかと思います。 UserProfileアクティビティのレイアウトは、ユーザ情報の内容を除いて常に同じであるためです。異なるアクティビティが1つずつ順番に表示されるにもかかわらず、各アクティビティに対してフラグメントを使用することは可能ですか?

ありがとうございます!

答えて

1

これは、別の方法で設計する必要があります。スタックにはUserProfileActivityの1つだけを置いてください。スタックにユーザーAのUserProfileActivityが既に存在し、ユーザーBにを表示する場合は、の場合はstartActivity()とし、Intent.FLAG_ACTIVITY_REORDER_TO_FRONTの場合はActivityにユーザーBが表示されるようにいくつかの補足を渡します。すべてのあなたの活動。

[戻る]ボタンのナビゲーションが正しく機能するようにするには、onBackPressed()を無効にして、表示する必要がある内容とデータを把握する必要があります。次にstartActivity()と電話し、Intent.FLAG_ACTIVITY_REORDER_TO_FRONTと設定して、Activityに正しいデータが表示されるように追加情報を提供してください。

あなたがどこにいるかを把握するのを助けるために、static変数のどこかに格納されているアイテムのスタックを作成することができます。各項目には、どのようなデータが表示されているのかを示すActivityが表示されます。新しいActivityを起動するたびに、新しいアイテムをこのスタックにプッシュし、ユーザーがBACKキーを押すたびにスタックから一番上のアイテムをポップし、その下にあるものを見て、何を開始するかを決定します。Activityエクストラで送信するデータ

このスキームでは、ユーザは1日中いつでもクリックすることができ、Activityの複数のインスタンスは決して存在しませんが、ユーザは引き続きすべての方法で戻ることができます。

+0

解決に感謝します!とても清潔でスマートに見えます。私は、静的なスタックを維持して、活動の振る舞いを追跡しようとします。 –

関連する問題