0

私はあなたたちがAndroid開発に関して(使用法、効率、あるいは良い習慣の点で)違いをどう思うかを見たいだけです。

アプリケーションサブクラス(すべてのアクティビティの単一のアプリケーションクラス)で非静的変数を使用するのではなく、基本アクティビティの1つで静的変数を使用する場合(つまり、その単一のインスタンスでどこからでもアクセスできます)。

グローバル変数を使用しようとすると、どちらも同じ最終結果を達成します。

私は静的なものを使用していたので、アプリケーションサブクラスを使用するように移動しました(「何のために使用しているのか」と疑問に思われる場合は、バックグラウンドミュージックを再生してどこからでも制御したいので、サービスを使用したくありません特定の理由で)。

最善の方法を明確にするための助けはありますか?

4

2 に答える 2

3

用途にもよりますが、

android:process

何らかの理由でActivityマニフェストファイルまたはその他のマニフェストファイルで静的値がリセットされ、静的変数に割り当てられた初期値が取得されます。その場合、SharedPreferenceまたはApplicationクラスを使用できます。

特定のアクティビティに使用する場合android:process、そのアクティビティは別のプロセスで実行され、Androidではすべてのアプリケーションが独自のプロセスで実行されることがわかっているためです。

これ以外は、スタティックの使用に大きな問題はないと思います。しかし、ApplicationAndroidにはグローバル変数用のクラスがあるので、個人的にはクラスを好みます。

于 2012-06-01T05:00:50.777 に答える
1

プログラムの実行中、各変数には、アクセスできる独自の時間があります。これは、変数の有効期間と呼ばれます。

  • インスタンス変数: インスタンス変数はクラスメンバーです。クラスからオブジェクトを作成するたびに、これらのインスタンス変数の新しいコピーがこのオブジェクト用に作成されます。実際、クラスからオブジェクトを作成するということは、部分的には、そのオブジェクトのインスタンス変数のコピーを作成することを意味します。したがって、各オブジェクトには、それらが属するオブジェクトが存在する限り存在するインスタンス変数の独自のコピーがあります。これらの変数の値は、オブジェクトの状態と呼ばれるものを構成します。

  • 静的変数: 静的変数もクラスのメンバーですが、そのクラスから作成されたオブジェクトに属することはできません。したがって、クラスから作成されたオブジェクトは、静的変数の独自のコピーを取得しません。したがって、静的変数は、実行時にクラスがロードされたときにのみ作成されます。静的変数の存在は、クラス自体にのみ依存します。結果として、静的変数はそのクラスが存在する限り存在します。

これら2つの変数の主な違いの1つはSystem.gc();、インスタンス変数を呼び出すときにnullに設定されるのに対し、静的変数はgcを呼び出すことによってnullに設定されないことです。

于 2012-06-01T05:26:38.377 に答える