113

属性は正確には何にtaskAffinity使用されますか? ドキュメントを確認しましたが、あまり理解できませんでした。

誰でも素人の言葉でタスクの親和性を説明できますか?

4

3 に答える 3

167

Android タスク アフィニティは何に使用されますか?

Android アプリケーションには、カードのデッキのようなスタックを形成するアクティビティがあります。Android アプリケーションを起動し、A、B、C、D、E の 5 つのアクティビティを開始するとします。彼らはスタックを形成します

E   - chat view
D   - weather screen
C   - map view
B   - weather screen
A   - login screen

E は最後に開始されたアクティビティであり、表示されています。Eを閉じるとDが表示されます。D を閉じると、C が表示されます。等

BアクティビティとDは同じアクティビティであることに注意してください。ユーザーが にいくつかの変更を加えたD weather screen後、アクティビティを閉じることにした後、 を閉じるとどうなりC Map viewますか?

その後、ユーザーは天気画面に戻り、 level で行われた変更が levelD weather screenに保存されなかったため、ユーザーは不満を抱くでしょうB weather screen。同じアクティビティですが、そのアクティビティの異なる STATE です。

ユーザーには 5 層のアクティビティ スタックがあり、そのうちの 2 つは同じアクティビティでした。スタックから 5 つすべてを取り出すと、同じアクティビティの 2 つの異なるバージョンとやり取りするという現象が発生し、非常に混乱する可能性があります。

ユーザーは通常、固定的なアクティビティのスタックという観点から考えることはありません。彼らは、「ああ、天気ビューを変更しよう」と考え、地図ビューに戻りたいと考えています。その後、ログイン画面に戻りたいので、もう一度バックアップします。なぜB weather app表示され、なぜレベルから設定を保存しなかったのDですか?

BアクティビティとDが状態でリンクされている場合、プログラマーは多少の混乱を軽減できる可能性があります。その方法が一方に変わると、他方が変わります。ユーザーが新しい天気予報画面を開くたびに、天気予報画面の 1 つのインスタンスがひそかに開かれます。

このような状況では、Activity の taskAffinity を変更することが望ましい場合があります。ユーザーはレベル D を変更します。次に、レベル B に戻ります。D に対して行われた B の変更を確認します。

プログラムは、バックアップできるスタックを保持します。これは素晴らしいことです。ユーザーがランダムな場所で同じアクティビティの X インスタンスを開くと、それらはすべて 1 になります。

詳細な説明付きのスライドショー: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack

于 2013-07-26T05:22:23.340 に答える