private void unbindDrawables(View view) {
   if (view != null && view.getBackground() != null) {
     view.getBackground().setCallback(null);
   }
   if (view instanceof ViewGroup && !(view instanceof AdapterView)) {
     for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
       unbindDrawables(((ViewGroup) view).getChildAt(i));
     }
     ((ViewGroup) view).removeAllViews();
   }
 }
  @Override
  protected void onDestroy() {
    if (mOrientationHelper != null) {
      mOrientationHelper.disable();
      mOrientationHelper = null;
    }

    LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
    if (lc != null) {
      lc.removeListener(mListener);
    }

    instance = null;
    super.onDestroy();

    unbindDrawables(findViewById(R.id.topLayout));
    System.gc();
  }