web-dev-qa-db-ja.com

アクティビティとコンテキストの違いは何ですか?

アクティビティとコンテキストは同じですか、それとも違いがありますか?

メソッドがアクティビティを渡すのはいつ、コンテキストはいつですか?

84
Android

私が理解している限り: 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 コンテキストへの参照

106
Rafael T

Android doc で見ることができます:

Activityクラスは「ContextThemeWrapper」から拡張され、これは「ContextWrapper」から拡張され、その1つは「Context」から拡張されます。

そのため、はい、アクティビティはコンテキストを拡張します!

8
zapotec