FP2-1530: [ST_2][Monkey] 'com.google.android.talk' crash 71 times

Just fix OOM problem.

Change-Id: I940db00a3d78f30b5083951428a9b76ffdcbcd9a
diff --git a/res/layout/main_clock_frame.xml b/res/layout/main_clock_frame.xml
index 9805a8f..bdc1248 100644
--- a/res/layout/main_clock_frame.xml
+++ b/res/layout/main_clock_frame.xml
@@ -37,7 +37,7 @@
             android:hand_hour="@drawable/clock_analog_hour_mipmap"
             android:hand_minute="@drawable/clock_analog_minute_mipmap"
             android:layout_marginBottom="@dimen/bottom_text_spacing_analog" />
-        <TextClock
+        <com.android.deskclock.DigitalClock
             android:id="@+id/digital_clock"
             android:format12Hour="@string/main_clock_12_hours_format"
             android:format24Hour="@string/clock_24_hours_format"
diff --git a/src/com/android/deskclock/ClockFragment.java b/src/com/android/deskclock/ClockFragment.java
index 588ca3e..c68c3b2 100644
--- a/src/com/android/deskclock/ClockFragment.java
+++ b/src/com/android/deskclock/ClockFragment.java
@@ -50,7 +50,10 @@
     private final static String TAG = "ClockFragment";
 
     private boolean mButtonsHidden = false;
-    private View mDigitalClock, mAnalogClock, mClockFrame, mHairline;
+    private View mClockFrame;
+    private View mHairline;
+    private AnalogClock mAnalogClock;
+    private DigitalClock mDigitalClock;
     private WorldClockAdapter mAdapter;
     private ListView mList;
     private SharedPreferences mPrefs;
@@ -189,8 +192,9 @@
             setupFakeOverflowMenuButton(menuButton);
         }
 
-        mDigitalClock = mClockFrame.findViewById(R.id.digital_clock);
-        mAnalogClock = mClockFrame.findViewById(R.id.analog_clock);
+
+        mDigitalClock = (DigitalClock) mClockFrame.findViewById(R.id.digital_clock);
+        mAnalogClock = (AnalogClock) mClockFrame.findViewById(R.id.analog_clock);
         Utils.setTimeFormat((TextClock) (mDigitalClock.findViewById(R.id.digital_clock)),
                 (int) getResources().getDimension(R.dimen.main_ampm_font_size));
         View footerView = inflater.inflate(R.layout.blank_footer_view, mList, false);
@@ -303,4 +307,15 @@
         mLeftButton.setVisibility(View.INVISIBLE);
         mRightButton.setVisibility(View.INVISIBLE);
     }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        if (mDigitalClock != null) {
+            mDigitalClock.onDetachedFromWindow();
+        }
+        if (mAnalogClock != null) {
+            mAnalogClock.onDetachedFromWindow();
+        }
+    }
 }
diff --git a/src/com/android/deskclock/DigitalClock.java b/src/com/android/deskclock/DigitalClock.java
new file mode 100644
index 0000000..80439d7
--- /dev/null
+++ b/src/com/android/deskclock/DigitalClock.java
@@ -0,0 +1,24 @@
+package com.android.deskclock; 
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.TextClock;
+
+public class DigitalClock extends TextClock {
+    public DigitalClock(Context context) {
+        this(context, null);
+    }
+
+    public DigitalClock(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+ 
+    public DigitalClock(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    @Override
+    public void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+    }
+}