Merge "Finish DreamActivity on creation if it is obsolete" into tm-dev am: abfe28784c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18090283 Change-Id: I92c04964abd61aabd37d9e8cca4fd2ca3ee99ba4 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -58,8 +58,9 @@ public class DreamActivity extends Activity {
|
|||||||
setTitle(title);
|
setTitle(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
DreamService.DreamServiceWrapper callback =
|
final Bundle extras = getIntent().getExtras();
|
||||||
(DreamService.DreamServiceWrapper) getIntent().getIBinderExtra(EXTRA_CALLBACK);
|
final DreamService.DreamActivityCallback callback =
|
||||||
|
(DreamService.DreamActivityCallback) extras.getBinder(EXTRA_CALLBACK);
|
||||||
|
|
||||||
if (callback != null) {
|
if (callback != null) {
|
||||||
callback.onActivityCreated(this);
|
callback.onActivityCreated(this);
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import android.content.pm.ServiceInfo;
|
|||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
import android.content.res.XmlResourceParser;
|
import android.content.res.XmlResourceParser;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.os.Binder;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
@@ -1272,7 +1273,7 @@ public class DreamService extends Service implements Window.Callback {
|
|||||||
Intent i = new Intent(this, DreamActivity.class);
|
Intent i = new Intent(this, DreamActivity.class);
|
||||||
i.setPackage(getApplicationContext().getPackageName());
|
i.setPackage(getApplicationContext().getPackageName());
|
||||||
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
i.putExtra(DreamActivity.EXTRA_CALLBACK, mDreamServiceWrapper);
|
i.putExtra(DreamActivity.EXTRA_CALLBACK, new DreamActivityCallback(mDreamToken));
|
||||||
final ServiceInfo serviceInfo = fetchServiceInfo(this,
|
final ServiceInfo serviceInfo = fetchServiceInfo(this,
|
||||||
new ComponentName(this, getClass()));
|
new ComponentName(this, getClass()));
|
||||||
i.putExtra(DreamActivity.EXTRA_DREAM_TITLE, fetchDreamLabel(this, serviceInfo));
|
i.putExtra(DreamActivity.EXTRA_DREAM_TITLE, fetchDreamLabel(this, serviceInfo));
|
||||||
@@ -1452,11 +1453,36 @@ public class DreamService extends Service implements Window.Callback {
|
|||||||
public void wakeUp() {
|
public void wakeUp() {
|
||||||
mHandler.post(() -> DreamService.this.wakeUp(true /*fromSystem*/));
|
mHandler.post(() -> DreamService.this.wakeUp(true /*fromSystem*/));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
void onActivityCreated(DreamActivity a) {
|
final class DreamActivityCallback extends Binder {
|
||||||
mActivity = a;
|
private final IBinder mActivityDreamToken;
|
||||||
onWindowCreated(a.getWindow());
|
|
||||||
|
DreamActivityCallback(IBinder token) {
|
||||||
|
mActivityDreamToken = token;
|
||||||
|
}
|
||||||
|
|
||||||
|
void onActivityCreated(DreamActivity activity) {
|
||||||
|
if (mActivityDreamToken != mDreamToken || mFinished) {
|
||||||
|
Slog.d(TAG, "DreamActivity was created after the dream was finished or "
|
||||||
|
+ "a new dream started, finishing DreamActivity");
|
||||||
|
if (!activity.isFinishing()) {
|
||||||
|
activity.finishAndRemoveTask();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (mActivity != null) {
|
||||||
|
Slog.w(TAG, "A DreamActivity has already been started, "
|
||||||
|
+ "finishing latest DreamActivity");
|
||||||
|
if (!activity.isFinishing()) {
|
||||||
|
activity.finishAndRemoveTask();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mActivity = activity;
|
||||||
|
onWindowCreated(activity.getWindow());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user