12

アプリケーションのすべてのポイントから呼び出し可能な Singleton クラスを作成したいと考えています。問題は、このクラスがその操作のためにコンテキストを必要とすることです。

すべてのアクティビティでシングルトンを再作成する必要はありません。そのようにすると、すべての意味が失われるため、コンテキストを引数として渡す init メソッドを使用して MainActivity で作成することを考えました。その時点から、シングルトンは使用可能になりますが、これは悪い設計だと思います。そのようにすると、MainActivity 参照が常に保持され、メモリ リークが発生する可能性があるからです。

私はここにいますか?

4

2 に答える 2

13

メモリ リークのため、メイン アクティビティ コンテキストをシングルトンに保存しないのは正しいことです。シングルトン内で一定のコンテキストが必要な場合は、getApplicationContext() を使用します。これで安心して保存できます。ただし、このコンテキストは、ほとんどの GUI 関連機能では使用できないことに注意してください。まれに、シングルトン内でアクティビティ レベルのコンテキストが必要になることがあります。呼び出し元のアクティビティ コンテキストを保存せずにシングルトンのメソッドに渡します。

于 2013-05-18T16:15:13.887 に答える