Problem: sometimes if you try to get some images from gallery using the Belvedere singleton you will notice that the getFilesFromActivityOnResult callback will not get called sometimes (a lot of times if you are using an older device). It happens because the ResolveUriTask store a Callback<List<MediaResult>> as a WeakReference. The problem is that onPreExecute, onPostExecute and doInBackground is run in different threads and there is also some delay when changing thread and the instance may be cleared in between too which causes this bug.
Reviewers
@brendan-fahy @baz8080 @schlan @eepDev
References
None
Risks
I don't believe the changes I have made can cause a memory leak but to be honest I didn't have time to go throughout the whole code to verify it (I'm truly sorry for that), but one thing that I think can cause the memory leak is the Context object stored inside ResolveUriTask (I can observe this as soon as I get some time here).
Changes
getFilesFromActivityOnResult
callback will not get called sometimes (a lot of times if you are using an older device). It happens because theResolveUriTask
store aCallback<List<MediaResult>>
as aWeakReference
. The problem is thatonPreExecute
,onPostExecute
anddoInBackground
is run in different threads and there is also some delay when changing thread and the instance may be cleared in between too which causes this bug.Reviewers
@brendan-fahy @baz8080 @schlan @eepDev
References
Risks
Context
object stored insideResolveUriTask
(I can observe this as soon as I get some time here).