1

5つのアクティビティを持つアプリを作成しています。5つのアクティビティすべてで使用される関数と変数を持つ1つのクラスがあります。このようにクラスを初期化するローカル変数を各アクティビティに作成しました。

localclass = new globalclass(getResouces());

私はandroid/java開発に不慣れで、何かを試したときにメモリフットプリントなどについて疑問に思っていました。開始される最初のアクティビティでは、localclassは前述のように設定されます。次に、他のアクティビティからこの変数にアクセスしようとしましたが、アクティビティ2、3などでこのように正常に実行しました。

localclass = com.firstactivity.localclass;

私が使用する変数の1つは、アプリケーションリソースへの参照です。2番目以降の活動では、私はこのようなリソースを取得しません。

res = getResources();

しかし、このように。

res = com.firstactivity.localclass.res;

これは、変数が静的である限り機能します。グローバルクラスの関数にも同じようにアクセスします。

これは悪い習慣ですか?

4

2 に答える 2

5

一般に、静的クラスを変数ホルダーとして使用することは、実際には良い習慣ではありません。代わりに、インテントによって他のアクティビティで必要な変数を渡してみてください。これが良いアプローチではない理由を詳しく説明しているので、これを参照してください。

于 2012-12-14T12:51:36.357 に答える
3

Application クラスを見てください。Application を拡張するクラスを作成します。

public class YourApplication extends Application {
    // functions, variables, whatever it is you need across your whole program
} 

アクティビティ/サービスでこれを呼び出して、アプリケーションへの参照を取得します。

YourApplication app = (YourApplication)getApplication();

また、マニフェスト ファイルでアプリケーションを宣言することを忘れないでください。

<application android:name="the.package.name.YourApplication" />
于 2012-12-14T12:52:34.160 に答える