按下返回按钮时停止GPS

4

我的应用程序在运行时使用GPS更新,我希望当用户退出应用程序时停止使用GPS,因为我认为这将继续浪费很多电池电量。我尝试拦截返回按钮的按下,但似乎没有起作用。我不确定这是因为它没有执行代码还是我使用了错误的命令。任何帮助都将不胜感激。

public boolean OnKeyDown(int keyCode, KeyEvent event){
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
    lm.removeUpdates(this);
        return true;    
    }
    return super.onKeyDown(keyCode, event);
}

+1 是为了考虑用户的可用功率;我非常支持考虑客户的想法。 - PP.
1个回答

4
只需在onPause()onStop()中调用removeUpdates(),可能更适合后者。

不好意思,前者 onStop() 不一定会被调用 :)。 - MrSnowflake
我正在使用onPause(),每当我从主活动导航到其他页面时它都能很好地工作。我想当你退出主活动时,onStop()才会被调用? - t.vb.w
当活动不再处于前台时,将调用onPause()。当活动不再可见时,在onPause()之后将调用onStop()。关于MrSnowflake的评论,唯一不会调用onStop()的时间是如果进程正在被终止(例如,紧急RAM回收),此时由操作系统负责确保GPS关闭,据我所知。 - CommonsWare
1
如果系统需要在onStop()之前终止您的进程,则该进程持有的资源当然也必须由系统释放。但是,如果您的进程没有持有资源,则可以执行一些操作,因此它被杀死不会清理它 - 基本上涉及PendingIntent或以其他方式通过Intent在将来启动活动的任何内容。例如,状态栏图标或requestLocationUpdates()与PendingIntent。当然,这些的目的是允许它们继续运行,即使您的进程已经消失。 - hackbod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接