Merge "BatteryStats: Don't schedule work when shutting down" into oc-mr1-dev
am: 4a8f95ba56
Change-Id: Ia71160c03ec0859cdf93082fc6ced121452a3ad6
This commit is contained in:
@@ -38,6 +38,7 @@ import com.android.internal.os.BatteryStatsImpl;
|
|||||||
|
|
||||||
import libcore.util.EmptyArray;
|
import libcore.util.EmptyArray;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
@@ -116,6 +117,10 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public synchronized Future<?> scheduleWrite() {
|
public synchronized Future<?> scheduleWrite() {
|
||||||
|
if (mExecutorService.isShutdown()) {
|
||||||
|
return CompletableFuture.failedFuture(new IllegalStateException("worker shutdown"));
|
||||||
|
}
|
||||||
|
|
||||||
scheduleSyncLocked("write", UPDATE_ALL);
|
scheduleSyncLocked("write", UPDATE_ALL);
|
||||||
// Since we use a single threaded executor, we can assume the next scheduled task's
|
// Since we use a single threaded executor, we can assume the next scheduled task's
|
||||||
// Future finishes after the sync.
|
// Future finishes after the sync.
|
||||||
@@ -127,7 +132,9 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync {
|
|||||||
* within the task, never wait on the resulting Future. This will result in a deadlock.
|
* within the task, never wait on the resulting Future. This will result in a deadlock.
|
||||||
*/
|
*/
|
||||||
public synchronized void scheduleRunnable(Runnable runnable) {
|
public synchronized void scheduleRunnable(Runnable runnable) {
|
||||||
mExecutorService.submit(runnable);
|
if (!mExecutorService.isShutdown()) {
|
||||||
|
mExecutorService.submit(runnable);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void shutdown() {
|
public void shutdown() {
|
||||||
@@ -135,6 +142,10 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Future<?> scheduleSyncLocked(String reason, int flags) {
|
private Future<?> scheduleSyncLocked(String reason, int flags) {
|
||||||
|
if (mExecutorService.isShutdown()) {
|
||||||
|
return CompletableFuture.failedFuture(new IllegalStateException("worker shutdown"));
|
||||||
|
}
|
||||||
|
|
||||||
if (mCurrentFuture == null) {
|
if (mCurrentFuture == null) {
|
||||||
mUpdateFlags = flags;
|
mUpdateFlags = flags;
|
||||||
mCurrentReason = reason;
|
mCurrentReason = reason;
|
||||||
|
|||||||
Reference in New Issue
Block a user