8

ここで、パフォーマンスについて一般的な質問があります。どれを実行し、どれを使用しないでください。私は実際にアプリで2つのアクティビティを使用しています。「theFirst」アクティビティと「theSecond」アクティビティと呼びましょう。

最初のアクティビティでは、パブリック静的オブジェクトがあります。私の場合は、接続詞と呼ばれる、私が作成したカスタムオブジェクトのリストです。

2番目のアクティビティを呼び出すときに、このリストのコンテンツを取得したいと思います。では、パブリック静的変数を使用する必要がありますか?何か問題ある?最初のアクティビティのインスタンスは1つだけですよね?したがって、パブリック静的変数を使用しても問題ありません。私は推測する。

または、リスト全体を計算し、その情報を大きな文字列に入れて、putExtraメソッドを使用してSecondアクティビティに送信する必要がありますか?

これについての良い説明はとても良いでしょう、そして私はそれを本当に感謝します:)

4

2 に答える 2

12

静的変数の使用はお勧めしません。静的変数は、ヒープのPermGenセクションに格納されます。クラスが終了しても、静的変数はヒープ内にとどまります。ガベージコレクターはマークアンドスイープを行います。2番目のアクティビティで参照される1番目のアクティビティに静的変数がある場合、リンクは長く留まります。より多くの静的変数を使用すると、メモリリークが発生する可能性があります。また、不要なオブジェクトの使用を減らします。

静的変数は、ClassLoaderによって参照されるClassオブジェクトによって参照されます。したがって、ClassLoaderが何らかの方法でクラスを削除するか、ClassLoader自体がガベージコレクションの対象にならない限り、静的変数はガベージコレクションされません。したがって、多くのクラスで参照されている静的変数を使用している場合、それらのクラスと静的変数が宣言されているクラスは、それらのクラスがガベージコレクションに使用できない限りガベージコレクションできません。したがって、これによりヒープメモリが拡張され、メモリリークが発生します。

プリミティブタイプにはpuExtraを使用することをお勧めします。あなたの場合、シングルトンを使用すると役立つはずです。

このビデオでは、静的変数を使用すべきでない理由と、メモリリークを回避する方法について説明しています。http://www.youtube.com/watch?v=_CruQY55HOk。その男は、MATアナライザーを使用してメモリリークをチェックすることについて話します。

このリンクもご覧ください。http://developer.android.com/guide/faq/framework.html。見出しの下の詳細をご覧ください*単一のアプリケーション内のアクティビティ/サービス間でデータを渡すにはどうすればよいですか?

于 2013-03-10T13:10:59.980 に答える
1

public static は良い考えではありません。「theFirst」アクティビティは、システムによって終了される場合があります。やり遂げる:アクティビティのライフサイクルは、アクティビティの仕組みに役立つ場合があります。

文字列としてではなく putExtra を使用することをお勧めしますが、Parselable または Serializable オブジェクトの putExtra も参照してください。シリアライズ可能についてはこちら

于 2013-03-10T13:05:09.260 に答える