mirror of
https://github.com/openharmony/ability_ability_runtime.git
synced 2026-08-24 12:43:16 -04:00
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user