When should I disconnect from Google Play Services in my Android app?

My application uses the location client to retrieve the current location, as well as the route to points placed by the user on the map. I'm new to google gaming services, and I wonder how best practices go when I have to turn off my LocationClient, if ever?

+4
source share
1 answer

The Android Learning Site offers two approaches for connecting and disconnecting LocationClient. In the training, “Extracting the current location” is LocationClientinitialized to onCreate, connect()called in, onStartand disconnect()called in onStoplike this (taken from the source code ).

@Override
protected void onCreate(Bundle savedInstanceState) {
    mLocationClient = new LocationClient(this, this, this);
}

@Override
public void onStop() {
    mLocationClient.disconnect();
    super.onStop();
}

@Override
public void onStart() {
    super.onStart();
    mLocationClient.connect();
}

You can then choose when and where to start or stop location updates.

LocationClient , . connect(), onConnected, requestActivityUpdates removeActivityUpdates disconnect(). DetectionRequester, :

public void requestUpdates() {
    getActivityRecognitionClient().connect();
}

@Override
private void onConnected() {
    getActivityRecognitionClient().requestActivityUpdates(...);
    getActivityRecognitionClient().disconnect();
}

@Override
public void onDisconnected() {
    mActivityRecognitionClient = null;
}

private ActivityRecognitionClient getActivityRecognitionClient() {
    if (mActivityRecognitionClient == null) {
        mActivityRecognitionClient = new ActivityRecognitionClient(...);
    }
    return mActivityRecognitionClient;
}

DetectionRemover, .

(requestUpdates removeUpdates) , :

public enum RequestType {
    START, STOP;
}

@Override
public void onConnected(Bundle bundle) {
    switch (mRequestType) {
        case START:
            getActivityRecognitionClient().requestActivityUpdates(...);
            break;
        case STOP:
            getActivityRecognitionClient().removeActivityUpdates(...);
            break;
        default:
            break;
    }
    getActivityRecognitionClient().disconnect();
}

@Override
public void onDisconnected() {
    mActivityRecognitionClient = null;
}


public void requestUpdates() {
    mRequestType = RequestType.START;
    getActivityRecognitionClient().connect();
}

public void removeUpdates() {
    mRequestType = RequestType.STOP;
    getActivityRecognitionClient().connect();
}

private ActivityRecognitionClient getActivityRecognitionClient() {
    if (mActivityRecognitionClient == null) {
        mActivityRecognitionClient = new ActivityRecognitionClient(...);
    }
    return mActivityRecognitionClient;
}

.

, , . . " ".

+3

Source: https://habr.com/ru/post/1523702/


All Articles