2012-03-26 14 views
0

von einer Aktivität (UI) Ich rufe eine Klasse, um meinen Standort zu bekommen. Bei onPause in der Aktivität versuche ich, die Listener zu stoppen, aber das GPS-Symbol in der Statusleiste blinkt weiter, dies ist bei mehreren Geräten der Fall (ich habe gelesen, dass es sich um ein HTC-Problem handelt).GPS bleibt aktiviert nach Ende()

Kann mir jemand sagen, wie ich dieses Problem beheben kann?

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); 
} 

Von der UI-Aktivität, nenne ich mGPSLocation.StopLocationListeners(); im onPause Methode, aber dies nicht funktioniert. Jeder kann mir helfen und einen Hinweis geben, warum das nicht möglich ist?

Danke

Antwort

1

Sie schließen GPS von öffentlichen Methoden. aber wie kannst du dir so sicher sein, dass das Objekt, das gerade läuft, sich nähert? Ich möchte damit sagen, dass Sie möglicherweise mehr als ein Objekt Ihrer Standortklasse haben. Sie müssen statisch für diesen Zweck verwenden, so dass beim Schließen von GPS wird nur die eine geschlossen.

+0

ich habe Das ist der Fall. Nicht alle laufenden Objekte sind geschlossen. Aber sollte ich die Klasse statisch machen? Weil das nicht erlaubt ist. – Diego

+0

Nein, Sie können Ihre Methoden und Variablen statisch machen. das wird gut – Krish

+0

Danke, ich hatte auch eine Mylocation Overlay nicht statisch, aber es funktioniert jetzt! Groß. – Diego

0

nach diesem Aufruf

mGPSLocation.StopLocationListeners(); 

Sie die Location, indem sie ihre Aufgabe stoppen .. auf null diese Zeile setzen

LocatieManager=null 

in StopLocationListeners() Methode ..

+0

Hi raju, danke, nur dass ich eine Nullpointer Exception bekomme, da läuft noch etwas im Hintergrund. – Diego

+0

können Sie mir die Logcat-Nachricht zeigen .. – 5hssba

+0

Sie haben die Zeile "LocatieManager = null" nach diesen drei Zeilen LocatieManager.removeUpdates (networklistener); LocatieManager.removeUpdates (gpslistener); LocatieManager.removeGpsStatusListener (gpsStatusListener); .. richtig? – 5hssba

Verwandte Themen