@TargetApi(Build.VERSION_CODES.KITKAT)
 public static boolean isViewAttachedToWindow(View v) {
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
     return v.isAttachedToWindow();
   } else {
     // A proxy call which returns null, if the view is not attached to the window.
     return v.getKeyDispatcherState() != null;
   }
 }
 private static boolean isAttachedToHierarchy(View v) {
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
     return v.isAttachedToWindow();
   }
   return v.getParent() != null; // Best-effort fallback
 }