Seems you are initializing the GPS vars (which should be public) back to your default lat, lon values.
I use a map to save the last known GPS values to a file and restore (read the map) when need be.
For example, a user starts your app but GPS is not enabled. Read the last stored GPS map file, which contains lat and lon (along with anything else) and present a dialog allowing the user to accept the LAST KNOWN values - or - WAIT until GPS locks on a new valid location (more code).
In my app, I need to have a valid lat, lon with each record written. There are times however when the GPS system can't resolve (initialize) a valid lat, lon before the user wishes to write a record (ie. login to my app). Simply read the map file and ask (display) if the last location is "good enough". In my situation, it often is because the user ended the app at the same location he/she is starting the app...
A little logic goes a long way, however it took two years for it to dawn on me.... Ok, I am slow learner.
Cheers.