szy_mat, nie prawda.
Context
ContextWrapper
Application
BackupAgent
ContextThemeWrapper
Activity
AccountAuthenticatorActivity
ActionBarActivity
ActivityGroup
AliasActivity
ExpandableListActivity
FragmentActivity
LauncherActivity
ListActivity
NativeActivity
PreferenceActivity
TabActivity
[*]IsolatedContext
[*]MutableContextWrapper
[*]RenamingDelegatingContext
[*]Service
[*] MockContext
Tak wygląda drzewko dziedziczenia od Contexta, jak widzisz Application jest tuż obok ContextThemeWrappera, a więc nie można powiedzieć, że pisząc "this przekazujemy Application które jest niejako kompatybilne z Contextem (rozszerza go).". Application jest klasą podrzedną do Context, ale nie na odwrót. Co prawda mając context można uzyskać obiekt Application za pomocą getApplicationContext, ale to nie oznacza, że nim od razu jest.
@Override
public Context getApplicationContext() {
return (mPackageInfo != null) ?
mPackageInfo.getApplication() : mMainThread.getApplication();
}
mPackageInfo występuje tylko w aplikacjach, a więc w usługach systemowych nie wyśtepuje np. Camera, Vibrator, WindowManager i inne.
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/ContextImpl.java