getApplicationContext ()
возвращает контекст приложения всего жизненного цикла приложения, когда приложение будет уничтожено, тогда оно также уничтожит.
this
контекст возвращает текущий контекст действия, принадлежит действию, действие уничтожается, затем оно также будет уничтожено. Но в вашем случае оно будет ссылаться на экземпляр Spinner
, потому что мы используя этот метод в onItemSelected(AdapterView<?>arg0, View arg1, int arg2, long arg3)
, который принадлежит классу Spinner
и Spinner
наследует этот метод от AdapterView.OnItemSelectedListener
interface
getBaseContext()
- это метод ContextWrapper
. И ContextWrapper
- это " Реализация прокси для контекста, которая просто делегирует все свои вызовы другому контексту. Может быть разделена на подклассы для изменения поведения без изменения исходного контекста. " (согласно javadocs) ..
и в вашем случае: Spinner
класс не является подклассом Context
или ContextWrapper
класс *
Toast.makeText(getBaseContext(),"SELECTED", Toast.LENGTH_SHORT).show();
означает, что getBaseContext()
- это метод ContextWrapper
, а ContextWrapper
- это прокси-реализация Context
, поэтому косвенно мы передаем объект класса контекста.
или мы также можем передать 'Activity.this', потому что Activity
class является подклассом ContextWrapper
class.
если вы используете документацию для Android , тогда для этого метода требуется объект класса Context:
public static Toast makeText (Context context, int resId, int duration)
, поэтому мы не можем передать действие или контекст класса, значит this
в Toast.makeText
, у которых нет подкласса Context
или ContextWrapper
класса.