1
// Create an instance of a manager.
IntegrityManager integrityManager =
    IntegrityManagerFactory.create(getApplicationContext());

// Request the integrity token by providing a nonce.
Task<IntegrityTokenResponse> integrityTokenResponse =
    integrityManager
        .requestIntegrityToken(
            IntegrityTokenRequest.builder().setNonce(nonce).build());

integrityTokenResponse.addOnSuccessListener(this::handleSuccess); integrityTokenResponse.addOnFailureListener(this::handleFailure);




in handleFailure listener I have retry logic with Thread.sleep(retryMillis) which is running on main thread and blocking the UI requests.

Can someone help me how to do retry without blocking main thread or how to run play integrity in a different thread.?

1 Answers1

1

After reading a bit more from this link, I realized that addOnFailureListener(this::handleFailure); constructor with a listener function always runs on main thread. I'm able to solve the problem by changing failurelistener as mentioned below by adding threadpool executor :

 integrityTokenResponse.addOnFailureListener(executor, this::handleFailure);
ruud
  • 743
  • 13
  • 22