当用户按下“后退”按钮或做出新的意图时,停止位置侦听器活动

欧足联

每当用户的位置更改时,此应用都会发出蜂鸣声。问题是,即使他们离开了应用程序并且它在后台,该应用程序仍将继续监视用户的位置。

应用程序进入后台后,如何停止位置监听器?

我认为我必须在OnPause()中添加一些内容,但无法使其正常工作。

package com.example.locationbeeper;

import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.media.AudioManager;
import android.media.ToneGenerator;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;



public class MainActivity extends FragmentActivity implements LocationListener {

    LocationManager locationManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // set up location manager
        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        Criteria criteria = new Criteria();
        String bestProvider = locationManager.getBestProvider(criteria, true);
        Location location = locationManager.getLastKnownLocation(bestProvider);
        if (location != null) {
            onLocationChanged(location);
        }
        locationManager.requestLocationUpdates(bestProvider, 200, 5, this);  // time in miliseconds, distance in meters (Distance drains battry life) originally set to 20000 and 0
    }

    @Override
    public void onLocationChanged(Location location) {
        // beep when location changed
        final ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_NOTIFICATION, 100);
        tg.startTone(ToneGenerator.TONE_PROP_BEEP);
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {

    }

    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onPause(){
        super.onPause();
        
        locationManager = null;
    }


}

瓦姆西

根据您的要求,您可以在活动的onPause()onStop()回调方法中添加以下行

if(locationManager !=null)
      locationManager.removeUpdates(this);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在活动上按下后退按钮后在片段中设置侦听器

当用户在谷歌浏览器中按下后退按钮时,如何加载上次状态?

当用户注销并重新登录时,Firestore 侦听器停止侦听

当用户更改选项卡并返回时停止触发事件侦听器

React Router:当用户按下后退按钮时如何重新渲染页面

当用户按下“后退”按钮时,强制重新提交表单

当用户在ah:form输入字段上按Enter时,通过ajax调用动作侦听器

按下Jmenu按钮时,使用Java的动作侦听器退出程序

活动暂停或停止时删除事件侦听器

活动停止时删除自定义侦听器

当用户按下“后退”按钮或刷新页面时,如何保持应用的搜索过滤器?

按下后退按钮时如何检查现有活动

按下后退按钮时活动布局出现问题

当用户按下主页按钮时,将日期保存在服务器中

当用户单击浏览器后退按钮时,焦点应位于他在dom中留下的位置

当用户按下ESC按钮时,如何关闭提示?

按下后退按钮后如何在循环时停止

按下后退按钮时不要停止服务

Rails 4-用户按下浏览器后退按钮时更新特定数据

当我按下后退按钮但我想停止应用程序android时打开登录活动

DatePicker:单击按钮旁边的侦听器做出反应

用户按下后退按钮时,游戏音乐不会在我的android游戏中停止

如何停止按下主页按钮时启动的多个活动

在启动活动中按下后退按钮时如何完成其他活动?

蓝牙设备按钮按下应在应用程序中触发Onclick侦听器

按下按钮时用户位置发送器应用程序崩溃

用户未按“完成”按钮时,EditText上的“完成”按钮的侦听器并清除EditText吗?

当用户单击Android中的“后退”按钮时,如何将数据从活动发送到片段?

如何停止位置侦听器服务?(现在不停止)