This section describes how an application can request for free RAM asynchronously.
Perform the steps described in Allowing Large Memory Allocation.
Requesting free RAM asynchronously is recommended as the application is not blocked during the method call handling.
The following code snippet illustrates an asynchronous request for free RAM allocation:
const TInt KLargeValueToAllocate = 2097152; //2MB // Start an asynchronous request for block of memory CMemoryAllocatingObject::StartFunctionalityRequiringAllocationL() { User::LeaveIfError(iOomMonitorSession.Connect()); iMemoryRequester = CMemoryRequester::NewL(iOomMonitorSession, *this); iMemoryRequester->Start(KLargeValueToAllocate); } // Called when the asynchronous request is completed CMemoryAllocatingObject::MemoryRequestCompleteL(TInt aResult) { if (aResult == KErrNone) { DoFunctionRequiring_KLargeValueToAllocate_BytesL(); } iOomMonitorSession.Close(); } The active object implementation is the following: // Start an asynchronous request for block of memory void CMemoryRequester::Start(TInt aBytesRequested) { iOomMonitorSession.RequestFreeMemory(aBytesRequested, iStatus); SetActive(); } // Called when the asynchronous request is completed void CMemoryRequester::RunL() { iObserver.MemoryRequestCompleteL(iStatus.Int()); }
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.