Merge "Don't keep a reference to Service object" into oc-dev

This commit is contained in:
TreeHugger Robot
2017-05-24 00:31:37 +00:00
committed by Android (Google) Code Review
3 changed files with 11 additions and 12 deletions

View File

@@ -3567,6 +3567,7 @@ public final class ActivityThread {
try {
if (localLOGV) Slog.v(TAG, "Destroying service " + s);
s.onDestroy();
s.detachAndCleanUp();
Context context = s.getBaseContext();
if (context instanceof ContextImpl) {
final String who = s.getClassName();

View File

@@ -767,7 +767,15 @@ public abstract class Service extends ContextWrapper implements ComponentCallbac
mStartCompatibility = getApplicationInfo().targetSdkVersion
< Build.VERSION_CODES.ECLAIR;
}
/**
* @hide
* Clean up any references to avoid leaks.
*/
public final void detachAndCleanUp() {
mToken = null;
}
final String getClassName() {
return mClassName;
}

View File

@@ -55,21 +55,12 @@ public abstract class JobServiceEngine {
*/
private static final int MSG_JOB_FINISHED = 2;
/**
* Context we are running in.
*/
private final Service mService;
private final IJobService mBinder;
/** Lock object for {@link #mHandler}. */
private final Object mHandlerLock = new Object();
/**
* Handler we post jobs to. Responsible for calling into the client logic, and handling the
* callback to the system.
*/
@GuardedBy("mHandlerLock")
JobHandler mHandler;
static final class JobInterface extends IJobService.Stub {
@@ -189,9 +180,8 @@ public abstract class JobServiceEngine {
* @param service The {@link Service} that is creating this engine and in which it will run.
*/
public JobServiceEngine(Service service) {
mService = service;
mBinder = new JobInterface(this);
mHandler = new JobHandler(mService.getMainLooper());
mHandler = new JobHandler(service.getMainLooper());
}
/**