mirror of
https://github.com/openharmony/ability_ability_runtime.git
synced 2026-08-24 12:43:16 -04:00
service leak detection
Signed-off-by: detail-hua <mingxihua@huawei.com> Signed-off-by: mingxihua <mingxihua@huawei.com>
This commit is contained in:
@@ -115,6 +115,9 @@ private:
|
||||
bool IsConnectCallerEqual(const sptr<IRemoteObject> &connectCaller, const sptr<IRemoteObject> &connectCallerOther);
|
||||
bool IsConnectReceiverEqual(const AppExecFwk::ElementName &connectReceiver,
|
||||
const AppExecFwk::ElementName &connectReceiverOther);
|
||||
ErrCode HandleCallbackTimeOut(const sptr<IRemoteObject> &connectCaller, const AAFwk::Want &want,
|
||||
const AppExecFwk::ElementName &connectReceiver, sptr<AbilityConnection> abilityConnection,
|
||||
const sptr<AbilityConnectCallback> &connectCallback);
|
||||
std::map<ConnectionInfo, std::vector<sptr<AbilityConnectCallback>>> abilityConnections_;
|
||||
};
|
||||
} // namespace AbilityRuntime
|
||||
|
||||
@@ -61,17 +61,7 @@ ErrCode ConnectionManager::ConnectAbility(const sptr<IRemoteObject> &connectCall
|
||||
abilityConnection->GetResultCode());
|
||||
return ERR_OK;
|
||||
} else {
|
||||
if (abilityConnection->GetRemoteObject() == nullptr) {
|
||||
while (true) {
|
||||
if (abilityConnection->GetRemoteObject() != nullptr) {
|
||||
connectCallback->OnAbilityConnectDone(connectReceiver, abilityConnection->GetRemoteObject(),
|
||||
abilityConnection->GetResultCode());
|
||||
return ERR_OK;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return AAFwk::AbilityManagerClient::GetInstance()->ConnectAbility(want, abilityConnection, connectCaller);
|
||||
return HandleCallbackTimeOut(connectCaller, want, connectReceiver, abilityConnection, connectCallback);
|
||||
}
|
||||
} else {
|
||||
abilityConnection = new AbilityConnection(connectCallback);
|
||||
@@ -208,5 +198,22 @@ bool ConnectionManager::IsConnectReceiverEqual(const AppExecFwk::ElementName &co
|
||||
return connectReceiver.GetBundleName() == connectReceiverOther.GetBundleName() &&
|
||||
connectReceiver.GetAbilityName() == connectReceiverOther.GetAbilityName();
|
||||
}
|
||||
|
||||
ErrCode ConnectionManager::HandleCallbackTimeOut(const sptr<IRemoteObject> &connectCaller, const AAFwk::Want &want,
|
||||
const AppExecFwk::ElementName &connectReceiver, sptr<AbilityConnection> abilityConnection,
|
||||
const sptr<AbilityConnectCallback> &connectCallback)
|
||||
{
|
||||
if (abilityConnection->GetRemoteObject() == nullptr) {
|
||||
while (true) {
|
||||
if (abilityConnection->GetRemoteObject() != nullptr) {
|
||||
connectCallback->OnAbilityConnectDone(connectReceiver, abilityConnection->GetRemoteObject(),
|
||||
abilityConnection->GetResultCode());
|
||||
return ERR_OK;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return AAFwk::AbilityManagerClient::GetInstance()->ConnectAbility(want, abilityConnection, connectCaller);
|
||||
}
|
||||
}
|
||||
} // namespace AbilityRuntime
|
||||
} // namespace OHOS
|
||||
|
||||
Reference in New Issue
Block a user