У меня есть служебный класс AppUtils для всего приложения, где я могу публиковать информацию, относящуюся к приложению, в любом случае:
- либо как SnackBar, когда я в приложении
- или с помощью диспетчера уведомлений
Например, когда сообщения идут как Snackbar, мне нужна дорожка текущего отображаемого контейнера View, чтобы использовать его в Snackbar.make(view, text, length);
Когда я хочу опубликовать это сообщение с помощью NotificationManager.notify(int, Builder);
, и мне нужна подпись класса в здесь
Intent resultIntent = new Intent(this, ResultActivity.class);
Поэтому у меня в AppUtils есть:
public static void setCurrentViewAndClass(View v, Class<?> c)
{
view = v; // view is static
cls = c; // cls is static
}
где я могу вспомнить отовсюду в моем проекте текущий вид (для параметра Snackbar) и cls (для намерения уведомления).
Далее я очищаю эти параметры, например. когда я выхожу из приложения в фоновом режиме:
public static void clearCurrentViewAndClass()
{
view = null;
cls = null;
}
О. Если эти параметры НЕ нулевые, я знаю, что мое приложение имеет фокус с соответствующим представлением, и я могу отобразить соответствующее сообщение в виде снэкбара. B. Когда эти параметры равны null, я знаю, что мое приложение работает в фоновом режиме, и я хочу отобразить соответствующее сообщение в виде уведомления.
Поэтому всякий раз, когда создается или возобновляется фрагмент/активность, я вызываю setClassAndview()
его в каждом onResume()
, чтобы запомнить параметры.
Есть ли более элегантный способ отслеживать текущее отображаемое действие или активный класс?