【问题标题】:GPS stays activated after finish()GPS 在完成后保持激活状态()
【发布时间】:2012-03-26 07:42:42
【问题描述】:

从 Activity (UI) 我调用一个类来获取我的位置。 在活动的 onPause 时,我尝试停止侦听器,但状态栏中的 GPS 图标一直闪烁,在更多设备上都是这种情况(我读到这是 HTC 问题)。

谁能告诉我如何解决这个问题?

The GPS location class:

public GPSLocation (Context context) {
            myContext = context;

            LocatieManager=(LocationManager)myContext.getSystemService(Context.LOCATION_SERVICE);
        }   

public void StopLocationListeners(){
     // LocationManager LocatieManager=(LocationManager)myContext.getSystemService(Context.LOCATION_SERVICE);
      LocatieManager.removeUpdates(netwerklistener);
      LocatieManager.removeUpdates(gpslistener);    
      LocatieManager.removeGpsStatusListener(gpsStatusListener);
}

在 UI 活动中,我在 onPause 方法中调用 mGPSLocation.StopLocationListeners();,但这不起作用。任何人都可以帮助我并提示为什么这是不可能的?

谢谢

【问题讨论】:

    标签: android gps listener locationmanager locationlistener


    【解决方案1】:

    您正在从公共方法中关闭 GPS。但是你怎么能确定当前正在运行的对象正在接近呢?我的意思是你的位置类可能有不止一个对象。您需要为此目的使用静态,以便在关闭 GPS 时它只会关闭特定的。

    【讨论】:

    • 我感觉就是这样。并非所有正在运行的对象都是关闭的。但是我应该让课程静态吗?因为那是不允许的。
    • 不,您可以将方法和变量设为静态。会好的
    • 谢谢,我也有一个非静态的 mylocation 覆盖,但它现在可以工作了!太好了。
    【解决方案2】:

    调用后

    mGPSLocation.StopLocationListeners();
    

    您可以通过将 LocationListener 的对象设置为 null 来停止它.. 放这一行

    LocatieManager=null
    

    在 StopLocationListeners() 方法中..

    【讨论】:

    • 嗨,raju,谢谢,唯一的问题是我得到了一个空指针异常,因为后台仍在运行。
    • 你在这三行之后添加了一行 "LocatieManager=null" LocatieManager.removeUpdates(netwerklistener); LocatieManager.removeUpdates(gpslistener); LocatieManager.removeGpsStatusListener(gpsStatusListener);.. 对吗?
    • 是的,但我认为还有另一个对象正在运行。它提供了一个空指针,它调用 LocatieManager,但它不应该再调用 LocatieManager,因为应用程序已关闭。我一直在寻找..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 2012-03-09
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多