Merge "Immediately notify VM of TOP process state" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
37e033dbc3
@@ -273,11 +273,6 @@ public final class ActivityThread extends ClientTransactionHandler
|
|||||||
private static final boolean DEBUG_PROVIDER = false;
|
private static final boolean DEBUG_PROVIDER = false;
|
||||||
public static final boolean DEBUG_ORDER = false;
|
public static final boolean DEBUG_ORDER = false;
|
||||||
private static final long MIN_TIME_BETWEEN_GCS = 5*1000;
|
private static final long MIN_TIME_BETWEEN_GCS = 5*1000;
|
||||||
/**
|
|
||||||
* If the activity doesn't become idle in time, the timeout will ensure to apply the pending top
|
|
||||||
* process state.
|
|
||||||
*/
|
|
||||||
private static final long PENDING_TOP_PROCESS_STATE_TIMEOUT = 1000;
|
|
||||||
/**
|
/**
|
||||||
* The delay to release the provider when it has no more references. It reduces the number of
|
* The delay to release the provider when it has no more references. It reduces the number of
|
||||||
* transactions for acquiring and releasing provider if the client accesses the provider
|
* transactions for acquiring and releasing provider if the client accesses the provider
|
||||||
@@ -367,8 +362,6 @@ public final class ActivityThread extends ClientTransactionHandler
|
|||||||
private final AtomicInteger mNumLaunchingActivities = new AtomicInteger();
|
private final AtomicInteger mNumLaunchingActivities = new AtomicInteger();
|
||||||
@GuardedBy("mAppThread")
|
@GuardedBy("mAppThread")
|
||||||
private int mLastProcessState = PROCESS_STATE_UNKNOWN;
|
private int mLastProcessState = PROCESS_STATE_UNKNOWN;
|
||||||
@GuardedBy("mAppThread")
|
|
||||||
private int mPendingProcessState = PROCESS_STATE_UNKNOWN;
|
|
||||||
ArrayList<WeakReference<AssistStructure>> mLastAssistStructures = new ArrayList<>();
|
ArrayList<WeakReference<AssistStructure>> mLastAssistStructures = new ArrayList<>();
|
||||||
private int mLastSessionId;
|
private int mLastSessionId;
|
||||||
final ArrayMap<IBinder, CreateServiceData> mServicesData = new ArrayMap<>();
|
final ArrayMap<IBinder, CreateServiceData> mServicesData = new ArrayMap<>();
|
||||||
@@ -2384,7 +2377,6 @@ public final class ActivityThread extends ClientTransactionHandler
|
|||||||
if (stopProfiling) {
|
if (stopProfiling) {
|
||||||
mProfiler.stopProfiling();
|
mProfiler.stopProfiling();
|
||||||
}
|
}
|
||||||
applyPendingProcessState();
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3452,16 +3444,7 @@ public final class ActivityThread extends ClientTransactionHandler
|
|||||||
}
|
}
|
||||||
wasCached = isCachedProcessState();
|
wasCached = isCachedProcessState();
|
||||||
mLastProcessState = processState;
|
mLastProcessState = processState;
|
||||||
// Defer the top state for VM to avoid aggressive JIT compilation affecting activity
|
updateVmProcessState(processState);
|
||||||
// launch time.
|
|
||||||
if (processState == ActivityManager.PROCESS_STATE_TOP
|
|
||||||
&& mNumLaunchingActivities.get() > 0) {
|
|
||||||
mPendingProcessState = processState;
|
|
||||||
mH.postDelayed(this::applyPendingProcessState, PENDING_TOP_PROCESS_STATE_TIMEOUT);
|
|
||||||
} else {
|
|
||||||
mPendingProcessState = PROCESS_STATE_UNKNOWN;
|
|
||||||
updateVmProcessState(processState);
|
|
||||||
}
|
|
||||||
if (localLOGV) {
|
if (localLOGV) {
|
||||||
Slog.i(TAG, "******************* PROCESS STATE CHANGED TO: " + processState
|
Slog.i(TAG, "******************* PROCESS STATE CHANGED TO: " + processState
|
||||||
+ (fromIpc ? " (from ipc" : ""));
|
+ (fromIpc ? " (from ipc" : ""));
|
||||||
@@ -3495,20 +3478,6 @@ public final class ActivityThread extends ClientTransactionHandler
|
|||||||
VMRuntime.getRuntime().updateProcessState(state);
|
VMRuntime.getRuntime().updateProcessState(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyPendingProcessState() {
|
|
||||||
synchronized (mAppThread) {
|
|
||||||
if (mPendingProcessState == PROCESS_STATE_UNKNOWN) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final int pendingState = mPendingProcessState;
|
|
||||||
mPendingProcessState = PROCESS_STATE_UNKNOWN;
|
|
||||||
// Only apply the pending state if the last state doesn't change.
|
|
||||||
if (pendingState == mLastProcessState) {
|
|
||||||
updateVmProcessState(pendingState);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void countLaunchingActivities(int num) {
|
public void countLaunchingActivities(int num) {
|
||||||
mNumLaunchingActivities.getAndAdd(num);
|
mNumLaunchingActivities.getAndAdd(num);
|
||||||
|
|||||||
Reference in New Issue
Block a user