Build JobStatus objects outside the lock
Constructing a JobStatus can be a surprisingly heavy operation, potentially involving IPC; so do so outside the primary lock when possible in order to reduce lock contention. Bug 28946245 Change-Id: I51fffa6d29d566647edb583ae6e46ed6038d36e3
This commit is contained in:
@@ -223,10 +223,11 @@ public class JobServiceContext extends IJobCallback.Stub implements ServiceConne
|
||||
* stop executing.
|
||||
*/
|
||||
JobStatus getRunningJob() {
|
||||
final JobStatus job;
|
||||
synchronized (mLock) {
|
||||
return mRunningJob == null ?
|
||||
null : new JobStatus(mRunningJob);
|
||||
job = mRunningJob;
|
||||
}
|
||||
return job == null ? null : new JobStatus(job);
|
||||
}
|
||||
|
||||
/** Called externally when a job that was scheduled for execution should be cancelled. */
|
||||
|
||||
Reference in New Issue
Block a user