从Activity返回后,onResume()没有调用设置WebView()

时间:2010-12-05 12:29:20

标签: android gps webview onresume locationlistener

我正在尝试从Activity中实现返回,而无需刷新屏幕。据我所知,有4种可能的状态需要处理:

  1. 禁用“使用无线网络”和“使用GPS卫星”(用户将被定向到“我的位置”首选项,如果禁用,则不允许继续使用)
  2. 启用了这两个中的一个(2种可能性中的1种) 3,两者都启用
  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();
    }
    

1 个答案:

答案 0 :(得分:0)

使用boolean标记并使用它来跳过对setupWebView()的调用 - 也许是onResume()方法中的大多数代码 - 如果您知道它是安全的跳过它。您是致电startActivity()进入位置偏好设置屏幕的人,因此您就知道是否需要致电setupWebView()