am 4e5b67e6: Queue startActivity params if not yet ready.

* commit '4e5b67e69560ca443d5fb4b78abf56ae948f578c':
  Queue startActivity params if not yet ready.
This commit is contained in:
Craig Mautner
2014-02-07 23:37:56 +00:00
committed by Android Git Automerger

View File

@@ -18,6 +18,7 @@ package android.app;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.IIntentSender;
import android.content.Intent;
import android.content.IntentSender;
import android.graphics.SurfaceTexture;
@@ -43,6 +44,10 @@ public class ActivityView extends ViewGroup {
private int mHeight;
private Surface mSurface;
// Only one IIntentSender or Intent may be queued at a time. Most recent one wins.
IIntentSender mQueuedPendingIntent;
Intent mQueuedIntent;
public ActivityView(Context context) {
this(context, null);
}
@@ -118,28 +123,38 @@ public class ActivityView extends ViewGroup {
} catch (RemoteException e) {
throw new IllegalStateException("ActivityView: Unable to startActivity. " + e);
}
} else {
mQueuedIntent = intent;
mQueuedPendingIntent = null;
}
}
private void startActivityIntentSender(IIntentSender iIntentSender) {
try {
mActivityContainer.startActivityIntentSender(iIntentSender);
} catch (RemoteException e) {
throw new IllegalStateException(
"ActivityView: Unable to startActivity from IntentSender. " + e);
}
}
public void startActivity(IntentSender intentSender) {
final IIntentSender iIntentSender = intentSender.getTarget();
if (mSurface != null) {
try {
mActivityContainer.startActivityIntentSender(intentSender.getTarget());
} catch (RemoteException e) {
throw new IllegalStateException(
"ActivityView: Unable to startActivity from IntentSender. " + e);
}
startActivityIntentSender(iIntentSender);
} else {
mQueuedPendingIntent = iIntentSender;
mQueuedIntent = null;
}
}
public void startActivity(PendingIntent pendingIntent) {
final IIntentSender iIntentSender = pendingIntent.getTarget();
if (mSurface != null) {
try {
mActivityContainer.startActivityIntentSender(pendingIntent.getTarget());
} catch (RemoteException e) {
throw new IllegalStateException(
"ActivityView: Unable to startActivity from PendingIntent. " + e);
}
startActivityIntentSender(iIntentSender);
} else {
mQueuedPendingIntent = iIntentSender;
mQueuedIntent = null;
}
}
@@ -163,6 +178,14 @@ public class ActivityView extends ViewGroup {
throw new IllegalStateException(
"ActivityView: Unable to create ActivityContainer. " + e);
}
if (mQueuedIntent != null) {
startActivity(mQueuedIntent);
mQueuedIntent = null;
} else if (mQueuedPendingIntent != null) {
startActivityIntentSender(mQueuedPendingIntent);
mQueuedPendingIntent = null;
}
}
private void detach() {