Kilka wywołań interfejsu API zwraca długotrwałe operacje. które śledzą stan zadania, które jest wykonywane przez dłuższy czas, np. jest niepożądane.
Klasa operacji przyszłej
Najbardziej typowy sposób interakcji z pozostałymi osobami to OperationFuture. Jeśli użyjesz tego rozwiązania, upewnij się, że klient usługi nie został zniszczony.
Niezalecane:
private void doSomething() { OperationFuture<Empty, Empty> future = startLongRunningOperation(jobName); future.get(); } private OperationFuture<Empty, Empty> startLongRunningOperation(String jobToStart) throws UnsupportedEncodingException { try (OfflineUserDataJobServiceClient offlineUserDataJobServiceClient = googleAdsClient.getLatestVersion().createOfflineUserDataJobServiceClient()) { // Issues an asynchronous request to run the offline user data job for executing // all added operations. return offlineUserDataJobServiceClient.runOfflineUserDataJobAsync(jobToStart); } } Zalecane:
private void doSomethingElse() { try (OfflineUserDataJobServiceClient offlineUserDataJobServiceClient = googleAdsClient.getLatestVersion().createOfflineUserDataJobServiceClient()) { OperationFuture<Empty, Empty> future = startLongRunningOperation(offlineUserDataJobServiceClient, jobName); future.get(); } } private OperationFuture<Empty, Empty> startLongRunningOperation(String jobToStart) throws UnsupportedEncodingException { offlineUserDataJobServiceClient.runOfflineUserDataJobAsync(jobToStart); } Zwróć uwagę, że klasa OperationFuture jest używana tylko wtedy, gdy OfflineUserDataJobServiceClient jest w zakresie.