2010-12-05 4 views
0

Я пытаюсь реализовать возврат из Activity, не обновляя экран. Насколько я вижу, есть 4 возможных состояния для обработки:onResume() без вызова setupWebView() после перенастройки из Activity

  1. И «Использовать беспроводные сети» и «Спутники GPS» отключены (пользователь перенаправляется на My Location предпочтениям и не позволили продолжить работу, если либо являются отключены)
  2. Один из этих двух включены (1 из 2 возможности) 3, оба включены

Моя проблема заключается в том, что после возвращения из других мероприятий в мое приложение, setupWebView() вызывается каждый раз, когда вызывая задержку обновления экрана.

Обновление требует некоторого возврата из предпочтений (например, после того, как после включения исправления появляется GPS), но, конечно, не после возвращения из Activity, поскольку временная задержка при повторной покраске экрана отвлекает и замедляет рабочий процесс моего приложение.

Может кто-нибудь, пожалуйста, сообщите, как обращаться с этим в моем 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(); 
} 

ответ

0

используйте устройство boolean флаг и использовать его, чтобы пропустить вызов setupWebView() - и, возможно, большая часть кода в методе onResume() - в тех случаях, когда вы знаете, что это безопасно пропустить. Вы тот, кто звонит startActivity(), чтобы перейти на экран настроек местоположения, и, следовательно, вы тот, кто знает, нужно ли вам звонить setupWebView().

+0

Это имеет смысл. Я попробую, спасибо. – qubz 2010-12-05 13:01:45