1

一部の場所でこれを実装したため、これが悪い習慣であるかどうかを判断したいと思います。

MainActivity と SecondActivity の 2 つのアクティビティがあります。

文字列 "Hello" を Main から Second に転送する場合は、Transfer というクラスを使用します。このクラスには、SecondActivity の onResume メソッドからアクセスする "Hello" に設定した静的な文字列があります。

Androidは「Transfer」クラスをどのように管理しますか? それは MainActivity に関連付けられ、それと共に破棄されますか? 他に注意すべき動作はありますか?

4

2 に答える 2

2

String フィールドが静的であることを考えると、MainActivity ではなくプロセス全体にバインドされていると言えます。

問題は、Android OS がアプリのリソースを解放して別のプロセスを開始する可能性があることです。アプリがバックグラウンドになり、OS がリソースを必要としてメモリを解放し、ユーザーが SecondActivity に戻る可能性があります。プロセスが再作成され、以前に初期化された静的フィールドが null になりました。

アクティビティ間で文字列を渡す必要がある場合は、それらをインテントのエクストラにバンドルします。

于 2013-01-26T01:25:30.060 に答える
1

アプリがメモリ内にある限り、静的メンバーは存在します。

このアプローチはうまく機能します。2 つのアクティビティ間でデータを共有するもう 1 つの方法は、putExtraデータを 2 番目のアクティビティgetExtrasに入れ、データを取得するために使用することです。

于 2013-01-26T01:31:57.310 に答える