am 4ebfe164: Merge "Don\'t refresh UI if it\'s not visible"

* commit '4ebfe1642818ba9fb13d4b301e512e2fa9d364f7':
  Don't refresh UI if it's not visible
diff --git a/src/com/android/music/AudioPreview.java b/src/com/android/music/AudioPreview.java
index 3f22c6c..0b1f3a1 100755
--- a/src/com/android/music/AudioPreview.java
+++ b/src/com/android/music/AudioPreview.java
@@ -63,6 +63,7 @@
     private SeekBar mSeekBar;
     private Handler mProgressRefresher;
     private boolean mSeeking = false;
+    private boolean mUiPaused = true;
     private int mDuration;
     private Uri mUri;
     private long mMediaId = -1;
@@ -122,9 +123,7 @@
         } else {
             mPlayer = player;
             mPlayer.setActivity(this);
-            if (mPlayer.isPrepared()) {
-                showPostPrepareUI();
-            }
+            // onResume will update the UI
         }
 
         AsyncQueryHandler mAsyncQueryHandler = new AsyncQueryHandler(getContentResolver()) {
@@ -196,6 +195,24 @@
     }
 
     @Override
+    public void onPause() {
+        super.onPause();
+        mUiPaused = true;
+        if (mProgressRefresher != null) {
+            mProgressRefresher.removeCallbacksAndMessages(null);
+        }
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        mUiPaused = false;
+        if (mPlayer.isPrepared()) {
+            showPostPrepareUI();
+        }
+    }
+
+    @Override
     public Object onRetainNonConfigurationInstance() {
         PreviewPlayer player = mPlayer;
         mPlayer = null;
@@ -241,6 +258,9 @@
         if (mDuration != 0) {
             mSeekBar.setMax(mDuration);
             mSeekBar.setVisibility(View.VISIBLE);
+            if (!mSeeking) {
+                mSeekBar.setProgress(mPlayer.getCurrentPosition());
+            }
         }
         mSeekBar.setOnSeekBarChangeListener(mSeekListener);
         mLoadingText.setVisibility(View.GONE);
@@ -248,7 +268,10 @@
         v.setVisibility(View.VISIBLE);
         mAudioManager.requestAudioFocus(mAudioFocusListener, AudioManager.STREAM_MUSIC,
                 AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
-        mProgressRefresher.postDelayed(new ProgressRefresher(), 200);
+        if (mProgressRefresher != null) {
+            mProgressRefresher.removeCallbacksAndMessages(null);
+            mProgressRefresher.postDelayed(new ProgressRefresher(), 200);
+        }
         updatePlayPause();
     }
     
@@ -303,19 +326,21 @@
 
     class ProgressRefresher implements Runnable {
 
+        @Override
         public void run() {
             if (mPlayer != null && !mSeeking && mDuration != 0) {
-                int progress = mPlayer.getCurrentPosition() / mDuration;
                 mSeekBar.setProgress(mPlayer.getCurrentPosition());
             }
             mProgressRefresher.removeCallbacksAndMessages(null);
-            mProgressRefresher.postDelayed(new ProgressRefresher(), 200);
+            if (!mUiPaused) {
+                mProgressRefresher.postDelayed(new ProgressRefresher(), 200);
+            }
         }
     }
     
     private void updatePlayPause() {
         ImageButton b = (ImageButton) findViewById(R.id.playpause);
-        if (b != null) {
+        if (b != null && mPlayer != null) {
             if (mPlayer.isPlaying()) {
                 b.setImageResource(R.drawable.btn_playback_ic_pause_small);
             } else {