## 2.10.0 (Oct 12, 2016)
Catch and handle CursorWindowAllocationException thrown when the SDK is querying from > the SQLite DB when app memory is low.
If the exception is caught during initialize, then it is treated as if initialize was > never called.
If the exception is caught during the uploading of unsent events, then the upload is deferred to a later time.
New logic was added recently (IdentifyInterceptor.transferInterceptedIdentify) that can throw CursorWindowAllocationException - the exception is not caught/handled in this case. I believe, we can’t defer transferInterceptedIdentify call (similar to If the exception is caught during the uploading of unsent events, then the upload is deferred to a later time).
To reduce cursor memory usage now each event is loaded from sqlite database with separate query/cursor. Hope it helps.
Currently my environment doesn't work with Amplitude-Android (build/test) - so I didn't test properly (CI tests only).
https://github.com/amplitude/Amplitude-Android/blob/main/CHANGELOG.md#2100-oct-12-2016
https://github.com/amplitude/Amplitude-Android/blob/main/src/main/java/com/amplitude/api/AmplitudeClient.java#L444
https://github.com/amplitude/Amplitude-Android/blob/main/src/main/java/com/amplitude/api/AmplitudeClient.java#L2187
New logic was added recently (
IdentifyInterceptor.transferInterceptedIdentify
) that can throwCursorWindowAllocationException
- the exception is not caught/handled in this case. I believe, we can’t defertransferInterceptedIdentify
call (similar toIf the exception is caught during the uploading of unsent events, then the upload is deferred to a later time
).To reduce cursor memory usage now each event is loaded from sqlite database with separate query/cursor. Hope it helps.
Currently my environment doesn't work with Amplitude-Android (build/test) - so I didn't test properly (CI tests only).
Some unused code is removed.