OSDN Git Service

Documentation warning against short-lived Contexts
authorRobin Lee <rgl@google.com>
Fri, 12 Aug 2016 11:46:28 +0000 (12:46 +0100)
committerRobin Lee <rgl@google.com>
Tue, 23 Aug 2016 12:47:54 +0000 (12:47 +0000)
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

index cce58c2..be9ebb5 100644 (file)
@@ -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 {
      *
      * <p> This method may block while waiting for a connection to another process, and must never
      * be called from the main thread.
+     * <p> 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 {
      *
      * <p> This method may block while waiting for a connection to another process, and must never
      * be called from the main thread.
+     * <p> 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}.