2011-12-28 21 views
4

私は、Android tabHostアプリケーションでアプリケーションを拡張するクラスを持っています。 Appクラスでは、すべてのクラスで再作成する必要のあるメソッドと変数を配置しています。 1つのメソッドは、DBから読み込み、結果をArrayList(名前、姓など)に格納します。このデータベースを再読み込みし、情報が必要なすべてのタブビューのコードを再作成するのではなく、Application(myAppClass)を拡張するクラスにメソッドとArrayListを貼り付けました。このようにして、onCreate()の任意のタブビューからmAC = (myAppClass) getApplicationContext()を設定することにより、myAppClassのすべてのget ..()メソッドとset ..()メソッドを参照できます。静的メソッドとクラスを継承するクラスとandroid.app.Application?

私の元の計画は、静的メソッドと変数を持つ共有クラスを使用することでしたが、「do not do that」スレッドを大量に読んで、アプリケーションルートに進むことにしました。今、私は、プロジェクトライブラリでmyAppClassを使用しようとしていますが、エラーが発生しましたandroid.app.Application cannot be cast to... myAppClassを静的メソッド/変数に戻して(そしてアプリケーションを拡張しないで)何かが動作しますが、これは想定されています大きなノーノであること。これを行う別の方法がありますか? Androidがすべてを参照渡しするかどうかはわかりませんが、メソッド/クラス間で巨大な(数千のオブジェクト/メンバー)ArrayListsを渡してアプリケーション全体を再実装する方が良いでしょうか?

+0

Applicationのインスタンスは1つだけです。ゲッターとセッターを使用する必要はありません。サブクラス化されたアプリケーションで静的メソッド/変数を使用し、そのように使用します:MyApplication.myMethod()... –

答えて

6

私の元の計画は、静的メソッドと変数を持つ共有クラスを使用することでしたが、私はたくさんの "do not do that"スレッドを読んで、アプリケーションルートに行くことに決めました。

「do not do」は、一般的にグローバルスコープ内の何かに対して推奨されているため、静的データメンバーとカスタムApplicationを対象とします。どちらもメモリリークの原因になります。さて、あなたの

...私はプロジェクトライブラリにmyAppClassを使用しようとしているような状況に遭遇しましたが、android.app.Application程度の誤差がにキャストすることができないばかり

ホスティングプロジェクトのマニフェストには、おそらくライブラリのApplication実装を使用するとは記載されていません。

これが再び無無

大きなことになって、静的データメンバは、カスタムApplicationよりも悪化していない、と多くの場合、優れています。

これを行う別の方法はありますか?

Applicationまたは静的データメンバーを使用しないでください。

メソッド/クラス間で巨大な(数千のオブジェクト/メンバー)ArrayListsを前後に渡して再実装する方が良いでしょうか?

データベースなどの永続データモデルを使用する方がよいでしょう。永続データ・モデルのキャッシュとして静的データ・メンバーを使用することは、メモリー管理に非常に注意が必要な場合は問題ありません。

+0

返事をありがとう。あなたはAndroidManifestでそれを釘付けにしました。オブジェクトの静的なArrayListを使用してメモリを管理するためには、何が異なる必要がありますか?アプリケーション終了時にAndroidのクリーンアップが行われませんか? – wufoo

+0

@wufoo: "アプリケーションの終了時にAndroidのクリーンアップが行われませんか?" - プロセスが最終的に終了したときにメモリがクリーンアップされている間に、メモリリークが発生しても、ヒープスペースが不足してアプリケーションがクラッシュする可能性があります。 – CommonsWare

+1

ありがとうございます。 Eclipse Memory Analyzerはリークを見つけるのに適したツールですか? 2年前のスレッドを削除する:http://stackoverflow.com/questions/1147172/what-android-tools-and-methods-work-best-to-find-memory-resource-leaks – wufoo

関連する問題