アクティビティとコンテキストは同じですか、それとも違いがありますか?
メソッドがアクティビティを渡すのはいつ、コンテキストはいつですか?
私が理解している限り: Context はベースオブジェクトです。したがって、すべての ActivityApplication と同じは、Contextから派生します。これは、すべてのアクティビティとすべてのApplication
IS a Context
;
developer.Android.com
から アクティビティ
Java.lang.Object
↳ Android.content.Context
↳ Android.content.ContextWrapper
↳ Android.view.ContextThemeWrapper
↳ Android.app.Activity
そして アプリケーション
Java.lang.Object
↳ Android.content.Context
↳ Android.content.ContextWrapper
↳ Android.app.Application
アプリが動作している限り、アプリケーションコンテキストは存続しますが、アクティビティコンテキストはアクティビティで停止します(そのアクティビティのonDestroy
の後は無効です)。
したがって、アクティビティ間(つまりシングルトン)でコンテキストが必要な場合は、アプリケーションコンテキストを使用する方が適切です。
通常はAndroidコンテキストが期待されるフレームワークメソッドで、どちらを渡すかには違いはありません。しかし、 MemoryLeaks コンテキストへの参照
Android doc で見ることができます:
Activityクラスは「ContextThemeWrapper」から拡張され、これは「ContextWrapper」から拡張され、その1つは「Context」から拡張されます。
そのため、はい、アクティビティはコンテキストを拡張します!