gkris
gkris

Reputation: 1219

How to get location fix asynchronously

I have a login page (an activity in Android), during which I run an async task to get the location fix. Soon after the login is successful, I redirect the App into another activity. The location fixes are not available after i switch to the next activity. Here is how it goes:-

code:-

oncreate {
  ...
  AsyncTaskClass task;
  task.execute();
}

class AsyncTaskClass extends Async... {

  doInBackground () {
  locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locLstnr);
  }

  onPostExecute {
  //disable listener
  startActivity(nextPage);
  }
}

I can see that the location fix is requested by the App (GPS icon shows up in the taskbar), but within a moment, the postExecute() is executed, nextPage loads and location fixes are not obtained. How do I make sure that the location fixes will be obtained? In other words, even if I change the activity, how to make sure that the location is received in the background?

Upvotes: 0

Views: 765

Answers (1)

Stefan Bossbaly
Stefan Bossbaly

Reputation: 6794

You can get the last know location from using the getLastKnownLocation(LocationManager.GPS_PROVIDER) or the getLastKnownLocation(LocationManager.NETWORK_PROVIDER). If you want to register for location updates that will be a little bit more tricky. I would call

requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener)

from a persistent class in your app. In mine I have a class called location manager. When the location manager gets the location update then send the location to the Activity via a callback method that is implemented using an interface. Take a look at this question ... What is the simplest and most robust way to get the user's current location on Android?

Upvotes: 1

Related Questions