google play services - Android Activity Recognition - Reconnecting following Disconnection -
with google play services' activity recognition, recommend if service disconnects (which might) should remove client:
http://developer.android.com/training/location/activity-recognition.html
in cases, location services may disconnect activity recognition client before call disconnect(). handle situation, implement ondisconnected(). in method, set request flag indicate request not in progress, , delete client
that's fine, gives no instructions how reconnect [safely]. i'm running foreground service needs maintain activity recognition @ times, following disconnection:
@override public void ondisconnected() { mrecognitionenabled = false; mrequestinprogress = false; mrecognitionclient = null; //re-initialise activity recognition if service still running if (sservicerunning) { triggeractivityrecognition(); } } i reinstantiate client , reconnect:
private void triggeractivityrecognition() { if (!mrequestinprogress ) { mrequestinprogress = true; mrecognitionclient = new activityrecognitionclient(this, this, this); mrecognitionclient.connect(); } } but according of bug reports i'm getting, there's exception occurring follows:
java.lang.nullpointerexception @ com.google.android.gms.internal.bh.a(unknown source) @ com.google.android.gms.internal.k.f(unknown source) @ com.google.android.gms.internal.k$e.onserviceconnected(unknown source) @ com.google.android.gms.internal.l.a(unknown source) @ com.google.android.gms.internal.k.connect(unknown source) @ com.google.android.gms.location.activityrecognitionclient.connect(unknown source) @ com.myapp.myservice.triggeractivityrecognition(myservice.java:316) @ com.myapp.myservice.ondisconnected(myservice.java:407) @ com.google.android.gms.internal.k.a(unknown source) @ com.google.android.gms.internal.k$e.onservicedisconnected(unknown source) @ com.google.android.gms.internal.l$a$a.onservicedisconnected(unknown source) the disconnection occurs results in same stack trace every time.
so if being caused google play services, there can prevent or bug need log android?
this works me:
don't attempt reconnect ondisconnect(), instead nothing in ondisconnect()
public void ondisconnected() { //do nothing here } simply use client before, check if connected
if (!mrecognitionclient.isconnected()) { // client disconnected, reconnect mrecognitionclient.connect(); } the playservices seems reconnect nicely.
Comments
Post a Comment