アクティビティから再試行した後、setupwebview()を呼び出すことなくonresume()

StackOverflow https://stackoverflow.com/questions/4358777

質問

画面を更新する必要なく、アクティビティから戻ってくることを実装しようとしています。私が見る限り、処理する可能性のある4つの状態があります。

  1. 「ワイヤレスネットワークの使用」と「GPS衛星の使用」の両方が無効になっています(ユーザーは私の場所の設定に向けられており、どちらも無効になっている場合は継続することを許可されていません)
  2. これら2つのうちの1つが有効になっています(2つの可能性のうち1つ)3、両方が有効です

私の問題は、アプリで他のアクティビティから戻った後、SetupWebview()が毎回呼び出され、画面更新遅延が発生することです。

リフレッシュは好みから戻ってくる必要があります(例えば、有効になった後のGPSは修正を受けます)が、画面の再塗装の時間遅延が気を散らし、アプリのワークフローを遅くするため、アクティビティから戻った後は確かではありません。

すべてのsetupwebview呼び出しを避けるために、私のonresume()内でこれを処理する方法を誰かがアドバイスしてください。

これが私の主なアクティビティ内の私の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().

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top