Android: Как проверить, что приложение было доведено до фона, чтобы избежать не нужных проверок Broadcastreceiver
-
21-12-2019 - |
Вопрос
Вопрос просто просто:
Объяснение:
То, что я делаю, это иметь широкоструктуре, который называется каждый раз, когда состояние GPS изменяется (включает или отключает) и уведомляет пользователя, если GPS как отключен, приглашая его повторно повторно (запуск относительного намерения) ,
Я включаю в себя (и в конечном итоге отключить) его в корневой активности моего приложения, таким образом он будет призван для каждой дочерней деятельности.
Моя проблема выходит, когда пользователь нажимает кнопку домой (например) или открыть другое приложение и отключает GPS.
код
public class GPSStatusReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String provider = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if (!provider.contains(LocationManager.GPS_PROVIDER)) {
Intent gpsIntent = new Intent(context, GPSDialogActivity.class);
gpsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
gpsIntent.putExtra(GPSDialogActivity.GPS_DIALOG_TITLE, "Attivazione GPS");
gpsIntent.putExtra(GPSDialogActivity.GPS_DIALOG_MESSAGE, "E' necessario abilitare il GPS. Cliccare su 'Usa satelliti GPS'.");
context.startActivity(gpsIntent);
}
}
}
.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
*
*
Stuff
*
*
ComponentName component=new ComponentName(this, GPSStatusReceiver.class);
getPackageManager()
.setComponentEnabledSetting(component,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
@Override
protected void onDestroy() {
*
*
Stuff
*
*
*
ComponentName component=new ComponentName(this, GPSStatusReceiver.class);
getPackageManager()
.setComponentEnabledSetting(component,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
super.onDestroy();
}
.
Первичные потребности
Что было бы лучшим
Следуя приведенным выше потребностям:
Если пользователь отключает GPS, когда приложение находится в фоновом режиме (так, как он не должен иметь никакого уведомления), когда он снова принесет приложение вперед к фронту, я перехватываю его и выполнил ручную проверку состояния GPS и в конечном итоге сообщите пользователю, чтобы включить GPS.
Решение
Это одна из причин, почему фрагменты полезны.Если у вас есть один генеракодицетагкод, управляющий несколькими фрагментами, генеракодицетагкод и генеракодицетагкод этой активности будут обращаться с регистрацией и незарегистрированным приемным ресивером без осложнения детей.
Забавитесь, что я рекомендую подклассую активность в «GPSReceiverActivity», обрабатывая регистрацию и незарегистрированную регистрацию приемника, и используя это в качестве базовой базовой массы всех других видов деятельности, которые вы хотите получить трансляцию.
Хорошо написанный вопрос, кстати.