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
Post a Comment