Merge "Add Callback to wake up from Dream when DreamActivity is destroyed." into tm-qpr-dev

This commit is contained in:
Lucas Silva
2022-10-19 13:55:25 +00:00
committed by Android (Google) Code Review
2 changed files with 23 additions and 7 deletions

View File

@@ -44,6 +44,8 @@ import android.text.TextUtils;
public class DreamActivity extends Activity { public class DreamActivity extends Activity {
static final String EXTRA_CALLBACK = "binder"; static final String EXTRA_CALLBACK = "binder";
static final String EXTRA_DREAM_TITLE = "title"; static final String EXTRA_DREAM_TITLE = "title";
@Nullable
private DreamService.DreamActivityCallbacks mCallback;
public DreamActivity() {} public DreamActivity() {}
@@ -57,11 +59,19 @@ public class DreamActivity extends Activity {
} }
final Bundle extras = getIntent().getExtras(); final Bundle extras = getIntent().getExtras();
final DreamService.DreamActivityCallback callback = mCallback = (DreamService.DreamActivityCallbacks) extras.getBinder(EXTRA_CALLBACK);
(DreamService.DreamActivityCallback) extras.getBinder(EXTRA_CALLBACK);
if (callback != null) { if (mCallback != null) {
callback.onActivityCreated(this); mCallback.onActivityCreated(this);
} }
} }
@Override
public void onDestroy() {
if (mCallback != null) {
mCallback.onActivityDestroyed();
}
super.onDestroy();
}
} }

View File

@@ -1295,7 +1295,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, new DreamActivityCallback(mDreamToken)); i.putExtra(DreamActivity.EXTRA_CALLBACK, new DreamActivityCallbacks(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));
@@ -1488,10 +1488,10 @@ public class DreamService extends Service implements Window.Callback {
} }
/** @hide */ /** @hide */
final class DreamActivityCallback extends Binder { final class DreamActivityCallbacks extends Binder {
private final IBinder mActivityDreamToken; private final IBinder mActivityDreamToken;
DreamActivityCallback(IBinder token) { DreamActivityCallbacks(IBinder token) {
mActivityDreamToken = token; mActivityDreamToken = token;
} }
@@ -1516,6 +1516,12 @@ public class DreamService extends Service implements Window.Callback {
mActivity = activity; mActivity = activity;
onWindowCreated(activity.getWindow()); onWindowCreated(activity.getWindow());
} }
// If DreamActivity is destroyed, wake up from Dream.
void onActivityDestroyed() {
mActivity = null;
onDestroy();
}
} }
/** /**