代码之家  ›  专栏  ›  技术社区  ›  slhck

当我的活动结束时,如何停止GPS/位置跟踪?

  •  6
  • slhck  · 技术社区  · 15 年前

    我有一个非常简单的Android应用程序,显示谷歌地图视图,并使用GPS跟踪位置(本质上是这样的):

    public void onCreate(Bundle savedInstanceState) {
        // ...
        mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        // ...
    }
    
    public void onResume() {
        super.onResume();
        mLocationManager.requestLocationUpdates(mProvider, 20000, 1, this);
    }
    
    public void onPause() {
        super.onPause();
        mLocationManager.removeUpdates(this);
    }
    
    public void onLocationChanged(Location location) {
        mPosition = getGeoPointForLocation(location);
        mMapController.setCenter(mPosition);
    }
    

    当我使用以下命令退出应用程序(例如通过菜单)时, GPS一直在跟踪 -活动似乎仍在运行:

    // ...
    case R.id.menu_exit:
        finish();
    // ...
    

    如果GPS跟踪不起作用,我如何在中删除位置管理器来停止它? onPause() 呼唤 finish() ?就我所阅读的教程或其他问题而言,这应该是解决方案。

    2 回复  |  直到 14 年前
        1
  •  7
  •   CircuitBreaker716    15 年前

        public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
        case R.id.quit:
    
            myLocOverlay.disableMyLocation(); //turn off location
            mlocManager.removeUpdates(this); // no impact on GPS tracking
            finish(); //destroy Android app
            return true;
    
        default:
            return super.onOptionsItemSelected(item);
        }
    }
    
        2
  •  0
  •   Rui Peres    15 年前