ContactExchangeTaskImpl keeps a reference to KeyAgreementActivity
KeyAgreementActivity implements ContactExchangeListener, an interface that ContactExchangeTaskImpl uses to keep the UI informed about its progress. ContactExchangeTaskImpl keeps a reference to the activity via this interface, but the activity may be destroyed before the task completes.
The activity's listener methods use runOnUiThreadUnlessDestroyed(), so they should return safely if they're called after the activity's destroyed, but the activity instance will be leaked until the task completes.