Одноэлементный класс неактивности управляет вызовами API сервера во всем приложении.В случае сбоя связи класс менеджера должен запустить действие входа в систему (launchMode="singleTask"
).
Класс менеджера не содержит контекста, поэтому действие входа в систему запускается из контекста приложения:
Intent intent = new Intent(App.getInstance().getApplicationContext(), LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION);
App.getInstance().getApplicationContext().startActivity(intent);
App.getInstance()
в этом отношении возвращает синглтон экземпляра MultiDexApplication
.
Кажется, что он работает.
Теперь существует бесчисленное множество статей SO по этой теме и контексты Android , но после прочтения многих я все еще не уверен, представляет ли это какие-либо риски.В некоторых ответах SO предлагается сохранять ссылку на контекст через обозреватель жизненного цикла действия, но я хочу избежать статической ссылки и потенциальной утечки памяти.
Единственный недостаток, который я обнаружил, заключается в том, что контекст приложения является «не тематическим», ноактивность выглядит как и ожидалось.Так что, похоже, это не проблема?
Есть ли проблемы с этим подходом?