Rufen Sie
FenceClient.queryFences() auf und übergeben Sie den Fence-Schlüssel für den Fence, den Sie abfragen möchten, um den aktuellen Status eines Fence abzufragen.
Im folgenden Beispiel wird FenceClient.queryFences() aufgerufen, um eine FenceStateMap abzurufen, und anschließend wird die FenceStateMap verwendet, um einen FenceStateWert zurückzugeben, der den aktuellen Status, den vorherigen Status und den Zeitpunkt der letzten Aktualisierung des Fence anzeigt:
protected void queryFence(final String fenceKey) {
Awareness.getFenceClient(this)
.queryFences(FenceQueryRequest.forFences(Arrays.asList(fenceKey)))
.addOnSuccessListener(new OnSuccessListener<FenceQueryResponse>() {
@Override
public void onSuccess(FenceQueryResponse response) {
FenceStateMap map = response.getFenceStateMap();
for (String fenceKey : map.getFenceKeys()) {
FenceState fenceState = map.getFenceState(fenceKey);
Log.i(TAG, "Fence " + fenceKey + ": "
+ fenceState.getCurrentState()
+ ", was="
+ fenceState.getPreviousState()
+ ", lastUpdateTime="
+ DATE_FORMAT.format(
new Date(fenceState.getLastFenceUpdateTimeMillis())));
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(TAG, "Could not query fence: " + fenceKey);
return;
}
});
}