Prevent dream service finishSelf before it was attached
Bring back stopSelf logic to prevent dream service finishSelf before any token attached. Fix: 150818348 Test: manual test, won't throw exp while leaving dream service. Merged-In: I31bb4f32013b9fa0aa2263b94117060e4d3a7341 Change-Id: I31bb4f32013b9fa0aa2263b94117060e4d3a7341
This commit is contained in:
@@ -906,22 +906,27 @@ public class DreamService extends Service implements Window.Callback {
|
||||
if (!mActivity.isFinishing()) {
|
||||
// In case the activity is not finished yet, do it now.
|
||||
mActivity.finishAndRemoveTask();
|
||||
return;
|
||||
}
|
||||
} else if (!mWindowless) {
|
||||
Slog.w(TAG, "Finish was called before the dream was attached.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mFinished) {
|
||||
mFinished = true;
|
||||
if (mFinished) {
|
||||
return;
|
||||
}
|
||||
mFinished = true;
|
||||
|
||||
try {
|
||||
// finishSelf will unbind the dream controller from the dream service. This will
|
||||
// trigger DreamService.this.onDestroy and DreamService.this will die.
|
||||
mDreamManager.finishSelf(mDreamToken, true /*immediate*/);
|
||||
} catch (RemoteException ex) {
|
||||
// system server died
|
||||
}
|
||||
if (mDreamToken == null) {
|
||||
Slog.w(TAG, "Finish was called before the dream was attached.");
|
||||
stopSelf();
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
// finishSelf will unbind the dream controller from the dream service. This will
|
||||
// trigger DreamService.this.onDestroy and DreamService.this will die.
|
||||
mDreamManager.finishSelf(mDreamToken, true /*immediate*/);
|
||||
} catch (RemoteException ex) {
|
||||
// system server died
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user