У меня есть приложение для Android, в котором есть служба подключения к Интернету. Сервис показывает снэк-бар всякий раз, когда приложение подключается к сети или отключается.
Службы работают нормально, однако при доступе к снэк-бару MainActivity или относительной компоновке, на которой я буду показывать снэк-бар, я получаю нулевые значения. Ниже приведена реализация обратного вызова из фоновой службы, этот метод записан внутри mainacctivity:
public void hasInternetConnection() {
if (!hasInternetMessageShown) {
showSnackBar("App is online", false);
}
}
private void showSnackBar(String message, boolean shouldStick) {
if (snack != null && snack.isShown()) {
snack.dismiss();
}
snack = Snackbar.make(rootView, message, Snackbar.LENGTH_SHORT);
snack.getView().setBackgroundColor(activity.getResources().getColor(R.color.blue_light));
TextView textView = snack.getView().findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(activity.getResources().getColor(R.color.orange));
Typeface typeface = ResourcesCompat.getFont(activity, R.font.semibold);
textView.setTypeface(typeface, Typeface.NORMAL);
if (shouldStick)
snack.setDuration(BaseTransientBottomBar.LENGTH_INDEFINITE);
snack.show();
}
Приведенный выше код работает только в том случае, если я сохраняю экземпляр закуски и активности статичными. Что я не хочу делать, так как это приведет к утечке памяти. Пожалуйста, помогите мне здесь, чтобы я мог справиться с этим эффективно.
Спасибо !!