Remember the process that token was added for also for the

services that are already running

Previously we'd only save the process in setProcess(), which
doesn't get called if the service already has a process attached.

Bug: 133309421
Test: manual (with the app on the bug)
Change-Id: I383d2ba9e0fd0bcda218c61dba4ef61ccd658691
This commit is contained in:
Michal Karpinski
2019-05-22 15:42:52 +01:00
parent 02db431c8c
commit 39422271a9

View File

@@ -551,12 +551,10 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN
.removeAllowBackgroundActivityStartsToken(this);
ams.mHandler.removeCallbacks(mStartedWhitelistingBgActivityStartsCleanUp);
}
mAppForStartedWhitelistingBgActivityStarts = null;
}
if (mHasStartedWhitelistingBgActivityStarts) {
// Make sure the cleanup callback knows about the new process.
mAppForStartedWhitelistingBgActivityStarts = _proc;
}
// Make sure the cleanup callback knows about the new process.
mAppForStartedWhitelistingBgActivityStarts = mHasStartedWhitelistingBgActivityStarts
? _proc : null;
if (mHasStartedWhitelistingBgActivityStarts
|| mHasBindingWhitelistingBgActivityStarts) {
_proc.addAllowBackgroundActivityStartsToken(this);
@@ -656,6 +654,9 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN
*/
void whitelistBgActivityStartsOnServiceStart() {
setHasStartedWhitelistingBgActivityStarts(true);
if (app != null) {
mAppForStartedWhitelistingBgActivityStarts = app;
}
// This callback is stateless, so we create it once when we first need it.
if (mStartedWhitelistingBgActivityStartsCleanUp == null) {