When I exit my app (by pressing back or the home button) the Activitys onDestroy() method is called (where I do lots of clean up with bitmaps).
When I reopen the app, onCreate() does not get called… it goes straight to onStart(), despite the fact that the Activity was finished. This is causing a “trying to use a recycled bitmap” error.
Is there a way to ensure that onCreate() is always called after an Activity is destroyed?
EDIT: I was mistaken. onCreate() IS being called. However, I am still getting the “trying to use a recycled bitmap” error. If onCreate() is going through all of it’s steps, wouldn’t any recycled bitmaps be reloaded?
The problem was with how I was setting the ImageView image. My original way to load an image from /res was:
apparently if you recycled a bitmap, the above code will not reallocate memory for the bitmap, and your program will crash when it tries to draw that ImageView.
The correct way to load a bitmap that has been recycled (or at least, the way that solved my problem) is:
It still doesn’t answer my question as to why, after exiting the app, and onDestroy is called, that when I re-enter the app, it is looking for a recycled bitmap. In theory the app should be starting up from scratch.