OnResume () без вызова SetupWebView () после подзожания от активности
-
08-10-2019 - |
Вопрос
Я пытаюсь реализовать возвращение из активности без необходимости обновлять экран. Насколько я вижу, есть 4 возможных состояния для обработки:
- Оба «использование беспроводных сетей» и «использование спутников GPS» отключены (пользователь направлен на мои настройки местоположения и не разрешено продолжать, если либо есть отключены)
- Один из этих двух включен (1 из 2 возможностей) 3, оба включены
Моя проблема в том, что после возвращения из других видов деятельности в моем приложении SetupWebView () вызывается каждый раз, вызывая задержку обновления экрана.
Обновление несколько необходимо, чтобы возвращаться из предпочтений (например, GPS после включения получает исправление), но, безусловно, не после возврата от активности в качестве задержки в повторной окраске экрана отвлекает и замедляет рабочий процесс моего приложения.
Может ли кто-нибудь посоветовать, как обрабатывать это в моем OnResume (), чтобы избежать всех вызовов SetupWebView.
Вот код из моего OnResume () в пределах моей основной деятельности:
@Override
protected void onResume() {
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
&& !locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER))
createMyLocationDisabledAlert();
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 500, 0, this);
mostRecentLocation = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (mostRecentLocation != null)
setupWebView();
else {
mostRecentLocation = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
setupWebView();
}
}
else if (locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 500, 0, this);
mostRecentLocation = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (mostRecentLocation != null)
setupWebView();
else {
mostRecentLocation = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
setupWebView();
}
}
// locationManager.requestLocationUpdates(provider, 500, 0, this);
// mostRecentLocation = locationManager.getLastKnownLocation(provider);
// } else
// mostRecentLocation = locationManager
// .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
super.onResume();
}
Решение
Использовать boolean
Флаг и используйте его, чтобы пропустить звонок в setupWebView()
- и, возможно, большая часть кода в вашем onResume()
Метод - в тех случаях, когда вы знаете, это безопасно пропустить его. Вы тот, кто звонит startActivity()
Чтобы перейти к экрану предпочтения местоположения, и, следовательно, вы тот, кто знает, нужно ли вам звонить setupWebView()
.