object
Sはシングルトンであるので、それらは単一の静的インスタンスを有します。したがって、context
プロパティを指定した場合は、まだ静的な方法でContext
を保存しています。
これは、Javaの静的フィールドにContext
を置くのと全く同じ結果になります。
あなたはKotlinはJavaでobject
用に生成同等のコードを記述する場合、それは実際に適切な糸くずのエラーになります:あなたは何の警告を取得されていません
public class Example {
// Do not place Android context classes in static fields; this is a memory leak
// (and also breaks Instant Run)
public static Context context;
// Do not place Android context classes in static fields (static reference to
// Example which has field context pointing to Context); this is a memory leak
// (and also breaks Instant Run)
public static Example INSTANCE;
private Example() { INSTANCE = this; }
static { new Example(); }
}
* Javaでは悪い習慣です*いいえ...それはKotlinでも悪いことを暗示するAndroid not javaに関連しています... – Selvin
もさまざまなコンテキストがあります...アプリケーション、アクティビティ、Service ...アプリケーションのコンテクストを格納することは、アクティビティやサービスのコンテクストを格納するよりも「悪くない」(より良いことができますが、コンテキストリークは発生しません) – Selvin
ええ、私の悪いです。それをAndroidに変更しました。 –