blob: c4caa4512acc32ab42f48ce061b9cf00f6d1b616 [file] [log] [blame]
/*
* 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);
}
}