Передача контекста IntentService

У меня есть этот код:

Intent publishIntent = new Intent(HistoryDoneVsPlanned.this, MyIntentService.class); publishIntent.putExtra(HistoryMap.KEY_WORKOUT_ID, workoutId); 

Где HistoryDoneVsPlanned – это моя текущая активность, а MyIntetService – IntentService.

И моя цель заключается в том, чтобы передать текущий контекст активности в функции intentService следующим образом:

 publishIntent.putExtra("CONTEXT", HistoryDoneVsPlanned.this); 

Но это невозможно.

Хорошая практика? Мне нужно сделать Toast и уведомление в другой класс (не Activity), и мне нужен контекст активности.

Хорошая практика? Мне нужно сделать Toast и уведомление в другой класс (не Activity), и мне нужен контекст активности.

Нет. Это не очень хорошая практика. Вы должны показать уведомление из Services . Но это зависит от поведения приложения, которое вы можете сделать.

Случай 1: если служба / Intent Service работает и выполняет задачу на фоне.

Вы должны показать уведомление вместо Тоста. Чтение Как показать уведомление из справочной службы?

Случай 2: Если служба / Intent Service запускает и выполняет задачу в фоновом режиме, но возвращает результат в действие (что означает, что пользователь присутствует для вашего приложения)

В этом случае вы можете показать Toast. Прочитать тост в текущем мероприятии со службы

Примечание. И не передавайте контекст через Intent в MyIntentService . Вы можете получить Context в MyIntentService , выполнив MyIntentService.this . И это потому, что все Components Android переопределяют класс Context , из них IntentService .

Когда вы используете контекст при использовании cross-activity , вы не должны привязывать Activity context к действию, так как тогда даже если действие будет уничтожено, оно не будет собрано в мусор, поскольку оно все еще ссылается на текущую задачу. В таких случаях вы должны использовать Application context . Подробнее см. Блог разработчиков Android .