android - getLastLocation does not work on second time -


i'm using google play services user's last known connection.

@override public void onconnected(bundle connectionhint) {     final location lastlocation = locationservices.fusedlocationapi.getlastlocation(                 _googleapiclient); }   @override     protected void onresume() {         super.onresume();          connecttogoogleplay();        }  @override     protected void onpause() {         super.onpause();         if (_googleapiclient != null) {             _googleapiclient.disconnect();         }     } 

works expected.

the problem occurs whenever i'm clicking on button , starting application again. app crashes because getlastlocation return null. formal documentation states -

if location not available, should happen rarely, null returned.

fine, know sure location exists, retrieved second ago.

i did quick experiment , removed _googleapiclient.disconnect(); , works, somehow disconnect erases last location

why ? missing ?

a few things consider:

1) should connect googleapiclient in onstart() , disconnect in onstop():

@override protected void onstart() {     super.onstart();     mgoogleapiclient.connect(); }  @override protected void onstop() {     mgoogleapiclient.disconnect();     super.onstop(); } 

2) code should assume getlastlocation() may return null. null check.

3) use islocationavailable() when working getlastlocation(). if returns true, location returned getlastlocation() can assumed reasonably date.


Comments

Popular posts from this blog

resizing Telegram inline keyboard -

command line - How can a Python program background itself? -

php - "cURL error 28: Resolving timed out" on Wordpress on Azure App Service on Linux -