From da23618043667e9cee680688b7413f65b400516e Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Fri, 12 Aug 2016 12:46:28 +0100 Subject: [PATCH] Documentation warning against short-lived Contexts It's better to use an Application Context rather than hoping the activity won't be destroyed in another thread (because it will). Change-Id: I9bf842d0d7dbedcc509a4a314d23a9a6cfca4d48 Fix: 29873669 --- keystore/java/android/security/KeyChain.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java index cce58c2096f35..be9ebb58675ef 100644 --- a/keystore/java/android/security/KeyChain.java +++ b/keystore/java/android/security/KeyChain.java @@ -20,6 +20,7 @@ import android.annotation.Nullable; import android.annotation.WorkerThread; import android.app.Activity; import android.app.PendingIntent; +import android.app.Service; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -356,6 +357,9 @@ public final class KeyChain { * *

This method may block while waiting for a connection to another process, and must never * be called from the main thread. + *

As {@link Activity} and {@link Service} contexts are short-lived and can be destroyed + * at any time from the main thread, it is safer to rely on a long-lived context such as one + * returned from {@link Context#getApplicationContext()}. * * @param alias The alias of the desired private key, typically returned via * {@link KeyChainAliasCallback#alias}. @@ -400,6 +404,9 @@ public final class KeyChain { * *

This method may block while waiting for a connection to another process, and must never * be called from the main thread. + *

As {@link Activity} and {@link Service} contexts are short-lived and can be destroyed + * at any time from the main thread, it is safer to rely on a long-lived context such as one + * returned from {@link Context#getApplicationContext()}. * * @param alias The alias of the desired certificate chain, typically * returned via {@link KeyChainAliasCallback#alias}.