What is the difference between Activity and Contex

2019-01-07 12:56发布

Are Activity and Context the same, or are there differences?

When should I have a method pass an Activity, and when a Context?

2条回答
Fickle 薄情
2楼-- · 2019-01-07 13:26

As far as I understand: Context is the Base Object. So every Activity same as Application derives from Context. This means that every Activity and every Application IS a Context;

From developer.android.com Activity

java.lang.Object
  ↳ android.content.Context
      ↳ android.content.ContextWrapper
          ↳ android.view.ContextThemeWrapper
              ↳ android.app.Activity

And Application

java.lang.Object
↳   android.content.Context
   ↳    android.content.ContextWrapper
       ↳    android.app.Application

An Application context lasts, as long as your app is alive, while the Activity context dies with your Activity (it is not valid after onDestroy of that Activity).

So if you need the Context across Activitys (i.e. in a Singleton) you will be better of using an Application context.

Usually on Android Framework methods where a context is expected it makes no difference which one you pass. But be always aware of MemoryLeaks if youre keeping long-living References to a Context

查看更多
男人必须洒脱
3楼-- · 2019-01-07 13:28

As You can see on the Android doc:

The Activity class extends from "ContextThemeWrapper", and this one from "ContextWrapper", and that one from "Context".

So, yes, An Activity extends the Context!

查看更多
登录 后发表回答