Snackbar
нужен View
, который будет отображаться, так что если вы хотите, чтобы показать закусочные на приложение в зависимости от состояния вашего Service
вы должны либо связать его с вашим Activity
или транслировать сообщение через LocalBroadcastManager
и показать сообщение на вашем View
.
Я не думаю, что вокруг есть какой-либо другой способ, вам нужно будет как-то связаться с вашим Activity
или Fragment
.
Закуски не похожи на тосты, которым нужен только контекст, поэтому, если вы хотите отобразить его из своего приложения, я считаю, что вы не можете с классом, предоставляемым Android.
Как из design guidelines:
Размещение
появляется над Закусочные большинство элементов на экране, и они равны по высоте к кнопке плавучих действий. Однако они ниже в высоте, чем диалоги, нижние листы и ящики для навигации.
Это не явный, но вы можете прийти к выводу, что он будет отображаться только в ваших приложениях. Итак, опять же, вам придется общаться с вашим видимым видом.
Отрывки на транслирует сообщение:
отправителя (на службу)
private void doSendBroadcast(String message) {
Intent it = new Intent("EVENT_SNACKBAR");
if (!TextUtils.isEmpty(message))
it.putExtra(EXTRA_RETURN_MESSAGE,message);
LocalBroadcastManager.getInstance(mContext).sendBroadcast(it);
}
приемник (на вашей деятельности)
private BroadcastReceiver mMessageReceiver = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Other stuff.
mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Do something
}
};
}
@Override
public void onResume() {
super.onResume();
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("EVENT_SNACKBAR"));
}
Больше на связанно услуги here.
И около LocalBroadcastManager
here on this question.
Update: Вы можете также использовать в EventBus для связи с видимой зрения, как это работает на Издатель/Подписчик моды. Вы могли бы даже использовать концепцию Sticky events, чтобы убедиться, что Snackbar
будет отображаться, как только приложение будет видно снова.
Посмотрите на мой номер this answer о том, как использовать автобус событий.
Чтобы уточнить, вы спрашиваете о том, чтобы показать Snackbar, когда пользователь использует приложение, или в любое время, даже если приложение закрыто? – Phil