Я хочу распространить общую проверку безопасности почти на каждый просмотр моего приложения.Для этого я сделал этот класс
public class ProtectedActivity extends ActivityBase {
boolean isAuthenticated = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Thread validationThread = new Thread()
{
@Override
public void run()
{
try
{
isAuthenticated = UserService.validateToken();
}
catch (FTNIServiceException e)
{
//eat it
}
finally
{
if (!isAuthenticated)
{
startActivity(new Intent(ProtectedActivity.this, SignInActivity.class));
finish();
}
}
}
};
validationThread.start();
}
}
Логика проста.Проверьте пользователя по моим успокоительным API, чтобы убедиться, что они вошли в систему. Если это не так, покажите его на странице входа.
Это прекрасно работает, потому что для добавления проверки безопасности все, что мне нужно сделатьнаследуется от моего ProtectedActivity
.
public class MainMenuActivity extends ProtectedActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
Проблема, однако, в том, что я периодически получаю View not attached to window manager
ошибок.Я понимаю, почему это происходит.Я начинаю новое намерение в родительском классе, и ребенок продолжает жить.попытаться изменить его взгляд, даже если началось новое намерение.Как лучше справиться с этим, чтобы, если пользователь не прошел проверку подлинности (например, его сеанс истекает на стороне сервера), он не выдавал ошибку при отправке пользователя на экран входа?