title: android: cleaning up memory on app destroy
body: <p>I am developing an app which instantiates a bunch of bitmap objects (e.g. buttons, which have cache bitmaps, so they don't have to get rendered again and again)</p>
  
  <p>Now, I realised that when I run and start the app repeatedly on my huawei mobile device, I get an OutOfMemoryException at a point where the app tries to allocate some memory for the bitmaps.
  So I guess it's the bitmaps which make trouble. I do know that there is a bitmap.recycle() method though.</p>
  
  <p>Now my question: what is best practice to clean up memory?
  Why isn't there some View method like View::onDestroy() which can be implemented for cleanup purpose?</p>
  
  <p>EDIT: example</p>
  
  <p>my "CirclyButton" (extends Button) class always draws a cached bitmap onDraw:</p>
  
  <pre><code>    @Override
      protected void onDraw(Canvas canvas) {
          super.onDraw(canvas);
          canvas.drawBitmap(this.getDefaultBitmap(), 0, 0, paint);
      }
      private Bitmap getDefaultBitmap(){
          if(mBitmapDefault == null){
              mBitmapDefault = Bitmap.createBitmap(8*radius, 8*radius, Config.ARGB_8888);
              Canvas canvas = new Canvas(mBitmapDefault);
              this.drawDefault(canvas);
              return mBitmapDefault;
          }
          return mBitmapDefault;
      }
  </code></pre>
  
  <p>So I guess this allocated data should be recycled somewhere...?</p>