194 lines
6.6 KiB
Java
194 lines
6.6 KiB
Java
/*
|
|
* Copyright (C) 2018 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package android.app;
|
|
|
|
import android.annotation.IntDef;
|
|
import android.os.Parcel;
|
|
import android.os.Parcelable;
|
|
|
|
/**
|
|
* State (oom score) for processes known to activity manager.
|
|
* {@hide}
|
|
*/
|
|
public final class ProcessMemoryState implements Parcelable {
|
|
/**
|
|
* The type of the component this process is hosting;
|
|
* this means not hosting any components (cached).
|
|
*/
|
|
public static final int HOSTING_COMPONENT_TYPE_EMPTY =
|
|
AppProtoEnums.HOSTING_COMPONENT_TYPE_EMPTY;
|
|
|
|
/**
|
|
* The type of the component this process is hosting;
|
|
* this means it's a system process.
|
|
*/
|
|
public static final int HOSTING_COMPONENT_TYPE_SYSTEM =
|
|
AppProtoEnums.HOSTING_COMPONENT_TYPE_SYSTEM;
|
|
|
|
/**
|
|
* The type of the component this process is hosting;
|
|
* this means it's a persistent process.
|
|
*/
|
|
public static final int HOSTING_COMPONENT_TYPE_PERSISTENT =
|
|
AppProtoEnums.HOSTING_COMPONENT_TYPE_PERSISTENT;
|
|
|
|
/**
|
|
* The type of the component this process is hosting;
|
|
* this means it's hosting a backup/restore agent.
|
|
*/
|
|
public static final int HOSTING_COMPONENT_TYPE_BACKUP =
|
|
AppProtoEnums.HOSTING_COMPONENT_TYPE_BACKUP;
|
|
|
|
/**
|
|
* The type of the component this process is hosting;
|
|
* this means it's hosting an instrumentation.
|
|
*/
|
|
public static final int HOSTING_COMPONENT_TYPE_INSTRUMENTATION =
|
|
AppProtoEnums.HOSTING_COMPONENT_TYPE_INSTRUMENTATION;
|
|
|
|
/**
|
|
* The type of the component this process is hosting;
|
|
* this means it's hosting an activity.
|
|
*/
|
|
public static final int HOSTING_COMPONENT_TYPE_ACTIVITY =
|
|
AppProtoEnums.HOSTING_COMPONENT_TYPE_ACTIVITY;
|
|
|
|
/**
|
|
* The type of the component this process is hosting;
|
|
* this means it's hosting a broadcast receiver.
|
|
*/
|
|
public static final int HOSTING_COMPONENT_TYPE_BROADCAST_RECEIVER =
|
|
AppProtoEnums.HOSTING_COMPONENT_TYPE_BROADCAST_RECEIVER;
|
|
|
|
/**
|
|
* The type of the component this process is hosting;
|
|
* this means it's hosting a content provider.
|
|
*/
|
|
public static final int HOSTING_COMPONENT_TYPE_PROVIDER =
|
|
AppProtoEnums.HOSTING_COMPONENT_TYPE_PROVIDER;
|
|
|
|
/**
|
|
* The type of the component this process is hosting;
|
|
* this means it's hosting a started service.
|
|
*/
|
|
public static final int HOSTING_COMPONENT_TYPE_STARTED_SERVICE =
|
|
AppProtoEnums.HOSTING_COMPONENT_TYPE_STARTED_SERVICE;
|
|
|
|
/**
|
|
* The type of the component this process is hosting;
|
|
* this means it's hosting a foreground service.
|
|
*/
|
|
public static final int HOSTING_COMPONENT_TYPE_FOREGROUND_SERVICE =
|
|
AppProtoEnums.HOSTING_COMPONENT_TYPE_FOREGROUND_SERVICE;
|
|
|
|
/**
|
|
* The type of the component this process is hosting;
|
|
* this means it's being bound via a service binding.
|
|
*/
|
|
public static final int HOSTING_COMPONENT_TYPE_BOUND_SERVICE =
|
|
AppProtoEnums.HOSTING_COMPONENT_TYPE_BOUND_SERVICE;
|
|
|
|
/**
|
|
* The type of the component this process is hosting.
|
|
* @hide
|
|
*/
|
|
@IntDef(flag = true, prefix = { "HOSTING_COMPONENT_TYPE_" }, value = {
|
|
HOSTING_COMPONENT_TYPE_EMPTY,
|
|
HOSTING_COMPONENT_TYPE_SYSTEM,
|
|
HOSTING_COMPONENT_TYPE_PERSISTENT,
|
|
HOSTING_COMPONENT_TYPE_BACKUP,
|
|
HOSTING_COMPONENT_TYPE_INSTRUMENTATION,
|
|
HOSTING_COMPONENT_TYPE_ACTIVITY,
|
|
HOSTING_COMPONENT_TYPE_BROADCAST_RECEIVER,
|
|
HOSTING_COMPONENT_TYPE_PROVIDER,
|
|
HOSTING_COMPONENT_TYPE_STARTED_SERVICE,
|
|
HOSTING_COMPONENT_TYPE_FOREGROUND_SERVICE,
|
|
HOSTING_COMPONENT_TYPE_BOUND_SERVICE,
|
|
})
|
|
public @interface HostingComponentType {}
|
|
|
|
public final int uid;
|
|
public final int pid;
|
|
public final String processName;
|
|
public final int oomScore;
|
|
public final boolean hasForegroundServices;
|
|
|
|
/**
|
|
* The types of the components this process is hosting at the moment this snapshot is taken.
|
|
*
|
|
* Its value is the combination of {@link HostingComponentType}.
|
|
*/
|
|
public final int mHostingComponentTypes;
|
|
|
|
/**
|
|
* The historical types of the components this process is or was hosting since it's born.
|
|
*
|
|
* Its value is the combination of {@link HostingComponentType}.
|
|
*/
|
|
public final int mHistoricalHostingComponentTypes;
|
|
|
|
public ProcessMemoryState(int uid, int pid, String processName, int oomScore,
|
|
boolean hasForegroundServices, int hostingComponentTypes,
|
|
int historicalHostingComponentTypes) {
|
|
this.uid = uid;
|
|
this.pid = pid;
|
|
this.processName = processName;
|
|
this.oomScore = oomScore;
|
|
this.hasForegroundServices = hasForegroundServices;
|
|
this.mHostingComponentTypes = hostingComponentTypes;
|
|
this.mHistoricalHostingComponentTypes = historicalHostingComponentTypes;
|
|
}
|
|
|
|
private ProcessMemoryState(Parcel in) {
|
|
uid = in.readInt();
|
|
pid = in.readInt();
|
|
processName = in.readString();
|
|
oomScore = in.readInt();
|
|
hasForegroundServices = in.readInt() == 1;
|
|
mHostingComponentTypes = in.readInt();
|
|
mHistoricalHostingComponentTypes = in.readInt();
|
|
}
|
|
|
|
public static final @android.annotation.NonNull Creator<ProcessMemoryState> CREATOR = new Creator<ProcessMemoryState>() {
|
|
@Override
|
|
public ProcessMemoryState createFromParcel(Parcel in) {
|
|
return new ProcessMemoryState(in);
|
|
}
|
|
|
|
@Override
|
|
public ProcessMemoryState[] newArray(int size) {
|
|
return new ProcessMemoryState[size];
|
|
}
|
|
};
|
|
|
|
@Override
|
|
public int describeContents() {
|
|
return 0;
|
|
}
|
|
|
|
@Override
|
|
public void writeToParcel(Parcel parcel, int i) {
|
|
parcel.writeInt(uid);
|
|
parcel.writeInt(pid);
|
|
parcel.writeString(processName);
|
|
parcel.writeInt(oomScore);
|
|
parcel.writeInt(hasForegroundServices ? 1 : 0);
|
|
parcel.writeInt(mHostingComponentTypes);
|
|
parcel.writeInt(mHistoricalHostingComponentTypes);
|
|
}
|
|
}
|