diff --git a/interfaces/inner_api/app_manager/include/appmgr/process_data.h b/interfaces/inner_api/app_manager/include/appmgr/process_data.h index 21e3166bd9cf2d091ed6e57da38d054e5693694d..ca27119524b081c04846066a7d8537b497246c12 100644 --- a/interfaces/inner_api/app_manager/include/appmgr/process_data.h +++ b/interfaces/inner_api/app_manager/include/appmgr/process_data.h @@ -54,6 +54,7 @@ struct ProcessData : public Parcelable { bool isContinuousTask = false; bool isKeepAlive = false; bool isFocused = false; + int32_t requestProcCode = 0; }; } // namespace AppExecFwk } // namespace OHOS diff --git a/interfaces/inner_api/app_manager/src/appmgr/process_data.cpp b/interfaces/inner_api/app_manager/src/appmgr/process_data.cpp index 3ecc5725159ed0ee5d169d880aa73051a165a4e7..08996bf55f70be77d44d0ecdcc47976b1f692167 100644 --- a/interfaces/inner_api/app_manager/src/appmgr/process_data.cpp +++ b/interfaces/inner_api/app_manager/src/appmgr/process_data.cpp @@ -24,7 +24,7 @@ bool ProcessData::Marshalling(Parcel &parcel) const { return (parcel.WriteString(bundleName) && parcel.WriteInt32(pid) && parcel.WriteInt32(uid) && parcel.WriteInt32(static_cast(state)) && parcel.WriteBool(isContinuousTask) && - parcel.WriteBool(isKeepAlive) && parcel.WriteBool(isFocused)); + parcel.WriteBool(isKeepAlive) && parcel.WriteBool(isFocused) && parcel.WriteInt32(requestProcCode)); } bool ProcessData::ReadFromParcel(Parcel &parcel) @@ -36,6 +36,7 @@ bool ProcessData::ReadFromParcel(Parcel &parcel) isContinuousTask = parcel.ReadBool(); isKeepAlive = parcel.ReadBool(); isFocused = parcel.ReadBool(); + requestProcCode = parcel.ReadInt32(); return true; } diff --git a/services/appmgr/include/app_running_record.h b/services/appmgr/include/app_running_record.h index 2afd935eab06b16b8ffbead6ca3ba80642e0fe60..047b18079a2cfc5e685f2a0e72c1ac7438cc0e6b 100644 --- a/services/appmgr/include/app_running_record.h +++ b/services/appmgr/include/app_running_record.h @@ -548,6 +548,10 @@ public: int64_t GetAppStartTime() const; + void SetRequestProcCode(int32_t requestProcCode); + + int32_t GetRequestProcCode() const; + private: /** * SearchTheModuleInfoNeedToUpdated, Get an uninitialized abilityStage data. @@ -644,6 +648,7 @@ private: AppSpawnStartMsg startMsg_; int32_t appIndex_ = 0; bool securityFlag_ = false; + int32_t requestProcCode_; }; } // namespace AppExecFwk } // namespace OHOS diff --git a/services/appmgr/src/app_mgr_service_inner.cpp b/services/appmgr/src/app_mgr_service_inner.cpp index e9f73a34086e84cec7b4424c98035d0ad4f11aaf..093fe3f478525dcbfc3222edc663bce88539cb5f 100644 --- a/services/appmgr/src/app_mgr_service_inner.cpp +++ b/services/appmgr/src/app_mgr_service_inner.cpp @@ -171,6 +171,7 @@ void AppMgrServiceInner::LoadAbility(const sptr &token, const spt StartProcess(abilityInfo->applicationName, processName, startFlags, appRecord, appInfo->uid, appInfo->bundleName, bundleIndex); } else { + appRecord->SetRequestProcCode((want == nullptr) ? 0 : want->GetIntParam("requestProcCode", 0)); StartAbility(token, preToken, abilityInfo, appRecord, hapModuleInfo, want); } PerfProfile::GetInstance().SetAbilityLoadEndTime(GetTickCount()); @@ -879,6 +880,7 @@ std::shared_ptr AppMgrServiceInner::CreateAppRunningRecord(con } appRecord->SetAppIndex(want->GetIntParam(DLP_PARAMS_INDEX, 0)); appRecord->SetSecurityFlag(want->GetBoolParam(DLP_PARAMS_SECURITY_FLAG, false)); + appRecord->SetRequestProcCode(want->GetIntParam("requestProcCode", 0)); } if (preToken) { diff --git a/services/appmgr/src/app_running_record.cpp b/services/appmgr/src/app_running_record.cpp index 23824c5e04c842802c5c32cffb9ef223b016f377..919e8f3482d49c907131bd5ec6a9587fb5429e0c 100644 --- a/services/appmgr/src/app_running_record.cpp +++ b/services/appmgr/src/app_running_record.cpp @@ -1353,5 +1353,16 @@ int64_t AppRunningRecord::GetAppStartTime() const { return startTimeMillis_; } + +void AppRunningRecord::SetRequestProcCode(int32_t requestProcCode) +{ + requestProcCode_ = requestProcCode; +} + + int32_t AppRunningRecord::GetRequestProcCode() const + { + return requestProcCode_; + } + } // namespace AppExecFwk } // namespace OHOS diff --git a/services/appmgr/src/app_state_observer_manager.cpp b/services/appmgr/src/app_state_observer_manager.cpp index 2a58e0eae6209307eb39e018ab40b0ddd41f806a..23740e6744decb115835b7b6b6233631b89c947d 100644 --- a/services/appmgr/src/app_state_observer_manager.cpp +++ b/services/appmgr/src/app_state_observer_manager.cpp @@ -388,6 +388,7 @@ ProcessData AppStateObserverManager::WrapProcessData(const std::shared_ptrIsContinuousTask(); processData.isKeepAlive = appRecord->IsKeepAliveApp(); processData.isFocused = appRecord->GetFocusFlag(); + processData.requestProcCode = appRecord->GetRequestProcCode(); return processData; }