Wenn Sie den aktuellen Status eines Fence abfragen möchten, rufen Sie
FenceClient.queryFences() auf und übergeben Sie den Fence-Schlüssel für den abzufragenden Fence.
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 zeigt:
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;
}
});
}