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