add preload mode tag

Signed-off-by: jusiyao <jusiyao1@huawei.com>
This commit is contained in:
jusiyao
2025-11-13 14:55:50 +08:00
parent 85768c680d
commit 8a6830b9ae
13 changed files with 23 additions and 18 deletions
@@ -68,6 +68,7 @@ struct AbilityStateData : public Parcelable {
std::string callerBundleName;
std::string callerAbilityName;
bool isInnerNotify = false;
int32_t preloadMode = -1
int32_t hostPid = 0;
std::string hostBundleName;
};
@@ -62,7 +62,6 @@ struct AppStateData : public Parcelable {
bool isFloatingWindowMode = false;
bool isSpecifyTokenId = false;
bool isPreloadModule = false;
bool isPrelaunch = false;
int32_t pid = -1;
int32_t uid = 0;
int32_t callerUid = -1;
@@ -69,7 +69,6 @@ struct ProcessData : public Parcelable {
int32_t childUid = -1;
bool isPreload = false;
bool isPreloadModule = false;
bool isPrelaunch = false;
int32_t callerPid = -1;
int32_t callerUid = -1;
std::string killReason;
@@ -98,6 +98,9 @@ bool AbilityStateData::MarshallingOne(Parcel &parcel) const
if (!parcel.WriteString(hostBundleName)) {
return false;
}
if (!parcel.WriteInt32(preloadMode)) {
return false;
}
return true;
}
@@ -136,6 +139,7 @@ bool AbilityStateData::ReadFromParcel(Parcel &parcel)
callerPid = parcel.ReadInt32();
hostPid = parcel.ReadInt32();
hostBundleName = parcel.ReadString();
preloadMode = parcel.ReadInt32();
return true;
}
@@ -28,8 +28,7 @@ bool AppStateData::Marshalling(Parcel &parcel) const
&& parcel.WriteInt32(static_cast<int32_t>(extensionType)) && parcel.WriteInt32Vector(renderPids)
&& parcel.WriteString(callerBundleName) && parcel.WriteBool(isSplitScreenMode) && parcel.WriteInt32(callerUid)
&& parcel.WriteBool(isFloatingWindowMode) && parcel.WriteInt32(appIndex) && parcel.WriteBool(isPreloadModule)
&& parcel.WriteBool(isPrelaunch) && parcel.WriteBool(isFromWindowFocusChanged)
&& parcel.WriteInt32(preloadMode));
&& parcel.WriteBool(isFromWindowFocusChanged) && parcel.WriteInt32(preloadMode));
}
bool AppStateData::ReadFromParcel(Parcel &parcel)
@@ -48,10 +47,8 @@ bool AppStateData::ReadFromParcel(Parcel &parcel)
isFloatingWindowMode = parcel.ReadBool();
appIndex = parcel.ReadInt32();
isPreloadModule = parcel.ReadBool();
isPrelaunch = parcel.ReadBool();
isFromWindowFocusChanged = parcel.ReadBool();
preloadMode = parcel.ReadInt32();
return true;
}
@@ -32,7 +32,7 @@ bool ProcessData::Marshalling(Parcel &parcel) const
&& parcel.WriteInt32(renderUid) && parcel.WriteUint32(accessTokenId) &&
parcel.WriteBool(isTestMode) && parcel.WriteInt32(exitReason) && parcel.WriteString16(Str8ToStr16(exitMsg)) &&
parcel.WriteInt32(childUid) && parcel.WriteBool(isPreload) && parcel.WriteBool(isPreloadModule) &&
parcel.WriteBool(isPrelaunch) && parcel.WriteInt32(callerPid) && parcel.WriteInt32(callerUid) &&
parcel.WriteInt32(callerPid) && parcel.WriteInt32(callerUid) &&
parcel.WriteString(killReason) && parcel.WriteBool(isFromWindowFocusChanged) &&
parcel.WriteInt32(preloadMode));
}
@@ -61,7 +61,6 @@ bool ProcessData::ReadFromParcel(Parcel &parcel)
childUid = parcel.ReadInt32();
isPreload = parcel.ReadBool();
isPreloadModule = parcel.ReadBool();
isPrelaunch = parcel.ReadBool();
callerPid = parcel.ReadInt32();
callerUid = parcel.ReadInt32();
killReason = parcel.ReadString();
@@ -3791,15 +3791,17 @@ int32_t AbilityConnectManager::ReportAbilityStartInfoToRSS(const AppExecFwk::Abi
}
bool isColdStart = true;
int32_t pid = 0;
int32_t preloadMode = -1;
for (auto const &info : runningProcessInfos) {
if (info.uid_ == abilityInfo.applicationInfo.uid) {
isColdStart = false;
pid = info.pid_;
preloadMode = static_cast<int32_t>(info.preloadMode_);
break;
}
}
TAG_LOGI(AAFwkTag::EXT, "ReportAbilityStartInfoToRSS, abilityName:%{public}s", abilityInfo.name.c_str());
ResSchedUtil::GetInstance().ReportAbilityStartInfoToRSS(abilityInfo, pid, isColdStart, false);
ResSchedUtil::GetInstance().ReportAbilityStartInfoToRSS(abilityInfo, pid, isColdStart, false, preloadMode);
return ERR_OK;
}
@@ -3497,6 +3497,7 @@ void AbilityManagerService::ReportAbilityStartInfoToRSS(const AppExecFwk::Abilit
bool isColdStart = true;
int32_t pid = 0;
bool supportWarmSmartGC = false;
int32_t preloadMode = -1;
for (auto const &info : runningProcessInfos) {
if (info.uid_ == abilityInfo.applicationInfo.uid &&
info.processType_ == AppExecFwk::ProcessType::NORMAL &&
@@ -3504,17 +3505,17 @@ void AbilityManagerService::ReportAbilityStartInfoToRSS(const AppExecFwk::Abilit
abilityInfo.applicationInfo.bundleName) != info.bundleNames.end()) {
isColdStart = info.isExiting ? true : info.preloadMode_ == AppExecFwk::PreloadMode::PRESS_DOWN;
pid = info.isExiting ? 0 : info.pid_;
AppExecFwk::PreloadMode mode = info.preloadMode_;
preloadMode = static_cast<int32_t>info.preloadMode_;
bool isSuggestCache = info.isCached;
bool supportWarmSmartGC = (isSuggestCache ||
mode == AppExecFwk::PreloadMode::PRE_MAKE ||
mode == AppExecFwk::PreloadMode::PRELOAD_MODULE);
info.preloadMode_ == AppExecFwk::PreloadMode::PRE_MAKE ||
info.preloadMode_ == AppExecFwk::PreloadMode::PRELOAD_MODULE);
TAG_LOGI(AAFwkTag::ABILITYMGR, "SmartGC: Process %{public}d report to RSS, start type: %{public}d, isCached: %{public}d, supportWarmGC: %{public}d",
pid, static_cast<int32_t>(mode), static_cast<int32_t>(isSuggestCache), static_cast<int32_t>(supportWarmSmartGC));
pid, preloadMode, static_cast<int32_t>(isSuggestCache), static_cast<int32_t>(supportWarmSmartGC));
break;
}
}
ResSchedUtil::GetInstance().ReportAbilityStartInfoToRSS(abilityInfo, pid, isColdStart, supportWarmSmartGC);
ResSchedUtil::GetInstance().ReportAbilityStartInfoToRSS(abilityInfo, pid, isColdStart, supportWarmSmartGC, preloadMode);
}
}
@@ -770,6 +770,7 @@ void AppRunningRecord::StateChangedNotifyObserver(const std::shared_ptr<AbilityR
}
}
abilityStateData.processType = static_cast<int32_t>(processType_);
abilityStateData.preloadMode = static_cast<int32_t>(preloadMode_);
BundleType bundleType = applicationInfo ? applicationInfo->bundleType : AppExecFwk::BundleType::APP;
auto serviceInner = appMgrServiceInner_.lock();
if (serviceInner) {
@@ -999,6 +999,7 @@ ProcessData AppStateObserverManager::WrapProcessData(
processData.callerUid = appRecord->GetCallerUid();
processData.killReason = appRecord->GetKillReason();
processData.isFromWindowFocusChanged = isFromWindowFocusChanged;
processData.preloadMode = appRecord->GetPreloadMode();
return processData;
}
+1 -1
View File
@@ -51,7 +51,7 @@ class ResSchedUtil final {
public:
static ResSchedUtil &GetInstance();
void ReportAbilityStartInfoToRSS(const AbilityInfo &abilityInfo, int32_t pid, bool isColdStart,
bool supportWarmSmartGC);
bool supportWarmSmartGC, int32_t preloadMode);
void ReportPreloadApplicationToRSS(const std::shared_ptr<AbilityInfo>& abilityInfo, int32_t preloadMode);
void ReportAbilityAssociatedStartInfoToRSS(
const AbilityInfo &abilityInfo, int64_t resSchedType, int32_t callerUid, int32_t callerPid);
+3 -2
View File
@@ -63,7 +63,7 @@ void ResSchedUtil::ReportSubHealtyPerfInfoToRSS()
}
void ResSchedUtil::ReportAbilityStartInfoToRSS(const AbilityInfo &abilityInfo, int32_t pid, bool isColdStart,
bool supportWarmSmartGC)
bool supportWarmSmartGC, int32_t preloadMode)
{
#ifdef RESOURCE_SCHEDULE_SERVICE_ENABLE
uint32_t resType = ResourceSchedule::ResType::RES_TYPE_APP_ABILITY_START;
@@ -73,7 +73,8 @@ void ResSchedUtil::ReportAbilityStartInfoToRSS(const AbilityInfo &abilityInfo, i
{ "bundleName", abilityInfo.applicationInfo.bundleName },
{ "abilityName", abilityInfo.name },
{ "pid", std::to_string(pid) },
{ "supportWarmSmartGC", supportWarmSmartGC ? "1": "0" }
{ "supportWarmSmartGC", supportWarmSmartGC ? "1": "0" },
{ "preloadMode", std::to_string(preloadMode) }
};
TAG_LOGD(AAFwkTag::DEFAULT, "call");
ResourceSchedule::ResSchedClient::GetInstance().ReportData(resType, isColdStart ? 1 : 0, eventParams);
@@ -58,7 +58,7 @@ HWTEST_F(ResSchedUtilTest, ResSchedUtilTest_0100, TestSize.Level2)
TAG_LOGI(AAFwkTag::TEST, "ResSchedUtilTest_0100 called.");
AbilityInfo abilityInfo;
int64_t resSchedType = -1;
AAFwk::ResSchedUtil::GetInstance().ReportAbilityStartInfoToRSS(abilityInfo, -1, false, false);
AAFwk::ResSchedUtil::GetInstance().ReportAbilityStartInfoToRSS(abilityInfo, -1, false, false, -1);
AAFwk::ResSchedUtil::GetInstance().ReportAbilityAssociatedStartInfoToRSS(abilityInfo, resSchedType, 0, 0);
int64_t ret = AAFwk::ResSchedUtil::GetInstance().convertType(resSchedType);
EXPECT_EQ(resSchedType, ret);