正常打开的情况下SeekBar是会正常移动的,当暂停后,正常或异常退出播放器,超过1分钟的情况下,再返回音乐播放器,在播放刚才播放的音乐SeekBar就不会移动,只有在手动拖动,或者该曲播放完毕的情况下才会移动……请高手分析下为什么会出现这种情况?????????

解决方案 »

  1.   

    你的seekbar是用什么方法更新的?我用handler更新seekbar的时候,程序运行后列表拖动就很卡,内存也很耗你的代码贴能出来参考下不?
      

  2.   

    package com.gem.medioplayer;import android.app.Activity;
    import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ImageButton;
    import android.widget.SeekBar;public class MediaPlayerActivity extends Activity implements Runnable{   
        /** Called when the activity is first created. */  
      
    //    private MediaPlayer mediaPlayer;   
        private ImageButton ibtnPlay;   
        private ImageButton ibtnPause;   
        private SeekBar sbarMedia;   
        private int total;   
      
        public void onCreate(Bundle savedInstanceState) {   
        super.onCreate(savedInstanceState);   
        setContentView(R.layout.main);   
        ibtnPlay = (ImageButton) findViewById(R.id.ibtnPlay);   
        ibtnPause = (ImageButton) findViewById(R.id.ibtnPause);   
        sbarMedia = (SeekBar) findViewById(R.id.sbarMedioPlayer);   
    //     mediaPlayer = MediaPlayer.create(this,R.raw.mp3_file_name);//创建MediaPlayer对象,讲raw文件下的mp3添加   
        sbarMedia.setProgress(0);   
    //     total = mediaPlayer.getDuration();   
        ibtnPause.setVisibility(View.INVISIBLE); //初始界面设置暂停按钮不可见  
        ibtnPlay.setOnClickListener(new OnClickListener(){   //单击播放按钮
            @Override  
            public void onClick(View arg0) {   
    //             mediaPlayer.start();   
                sbarMedia.setMax(total); //设置拖动条的最大值  
                ibtnPlay.setVisibility(View.INVISIBLE);  //播放按钮不可见 
                ibtnPause.setVisibility(View.VISIBLE);   //暂停按钮可见
            }   
        });   
      
        ibtnPause.setOnClickListener(new OnClickListener(){  //单击暂停按钮 
            @Override  
            public void onClick(View arg0) {   
    //             if(mediaPlayer.isPlaying()){   
    //                 mediaPlayer.pause();   
                    ibtnPlay.setVisibility(View.VISIBLE);   //播放按钮可见
                    ibtnPause.setVisibility(View.INVISIBLE);  //暂停按钮不可见 
    //             }   
            }   
        });   
      
        sbarMedia.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {   
      
            @Override  
            public void onStopTrackingTouch(SeekBar seekBar) {   
      
            }   
      
            @Override  
            public void onStartTrackingTouch(SeekBar seekBar) {   
            
            }   
      
            @Override  
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {   
                if(fromUser){   
    //                 mediaPlayer.seekTo(progress);   
                    sbarMedia.setProgress(progress);   
                }   
            }   
        });   
      
        Thread currentThread  = new Thread(this);   
        currentThread.start();   
      
        }   
      
        @Override  
        public void run() {   
            try {   
    //            while(mediaPlayer != null){   
    //                int currentPosition = mediaPlayer.getCurrentPosition();   
                    Message msg = new Message();   
    //                msg.what = currentPosition;   
                    threadHandler.sendMessage(msg);   
    //            }   
                Thread.sleep(100);   
            } catch (InterruptedException e) {   
                e.printStackTrace();   
            }   
        }   
        private Handler threadHandler = new Handler(){   
            public void handleMessage(Message msg){   
                sbarMedia.setProgress(msg.what);   
            }   
        };   
      
    }  
    /**
     *SeekBar不动,手托也动不了
      

  3.   

    handler更新seekbar的时候,程序运行后列表拖动就很卡,内存也很耗,我也遇到这么样的问题,有办法解决么?