However both the reference posts/threads are 4 to 5 years old.
Some other reading seems to suggest that the "recycle" approach was useful because various bits of bitmaps were kept in different heaps and "recycle" would immediately release the actual pixel data (the main memory gobbler).
On Android 2.3.3 (API level 10) and lower, the backing pixel data for a bitmap is stored in native memory. It is separate from the bitmap itself, which is stored in the Dalvik heap. The pixel data in native memory is not released in a predictable manner, potentially causing an application to briefly exceed its memory limits and crash. As of Android 3.0 (API level 11), the pixel data is stored on the Dalvik heap along with the associated bitmap.
It is not required as the memory will be released when there are no more live references to the bitmap.
Calling recycle can be dangerous as there may be still references to the bitmap object.
If you are creating large bitmaps (it usually happens when using Canvas) then you should avoid creating unnecessary bitmaps. You can for example create a process global mutable bitmap once and then reuse it.
Question: what if you use 2 large bitmaps in the one sub - you initialize and use first one then you are finished with it - you then want to initialize and use the second one - how do you "dereference" the first one so that if the garbage collector is fired while trying to initialize the second one the first ones memory will be recovered?
Yes, I have also done this - I have 2 versions of the app - this just means that you have a constant memory overhead - in the case of my app the memory required to run it is comparable to the dynamic version - I guess the upside is a reduced reliance on the garbage collector.
Question: getting back to my question in post #1, is the approach still valid?
In a similar vein, what if you use 2 large integer arrays in the one sub - you declare and use first one then you are finished with it - you then want to declare and use the second one - how do you "dereference" the first one so that if the garbage collector is fired while trying to declare the second one the first ones memory will be recovered?