如何在Android中停止AsyncTask?

时间:2011-03-26 08:02:17

标签: android

你好 使用asynctask运行进度条。我用它来显示我的歌曲持续时间。我希望当我按下停止按钮时,asynctask应该停止并且进度条应该到达初始位置。

public class BackgroundAsyncTask extends 
        AsyncTask<Void, Integer, Void> {

        int myProgress;

        @Override 
        protected void onPostExecute(Void result) {
                // TODO Auto-generated method stub
                Toast.makeText(AudioPlayer2.this,         
                        "onPostExecute", Toast.LENGTH_LONG).show();
                seekbar.setClickable(true);  
                }       

        @Override  
        protected void onPreExecute() {   
                // TODO Auto-generated method stub
                Toast.makeText(AudioPlayer2.this,         
                        "onPreExecute", Toast.LENGTH_LONG).show();
                myProgress = 0;  
                //seekbar.setProgress(myProgress);
        }       

        @Override 
        protected Void doInBackground(Void... params) {   
                // TODO Auto-generated method stub
                while(myProgress<100){
                        myProgress++;
                        //seekbar.setProgress(myProgress);
                        publishProgress(myProgress);
                        Log.d("AAAAAAAAAAAAAAAAAAAAAAAAAAAAA", bundleDuration);
                        SystemClock.sleep(2000) ;
                        }
                return null; 
        }       

        @Override
        protected void onCancelled() {
                super.onCancelled();
                //  myProgress=0;
                // seekbar.
                publishProgress(0);
                seekbar.setProgress(0);
        }       

        @Override
        protected void onProgressUpdate(Integer... values) { 
                // TODO Auto-generated method stub
                seekbar.setProgress(values[0]); 
        }       
} 

// ===================================== 使用此代码启动和停止m

public void onClick(View src) {
    switch (src.getId()) {
    case R.id.buttonStart:
new BackgroundAsyncTask().execute();
          break;
        case R.id.buttonStop:
          backgrondasynctask.cancel(true);
             break;

1 个答案:

答案 0 :(得分:0)

我认为你在这个例子中使用了错误的方法。您可以轻松实现进度条。这是一篇很好的文章,http://blog.sptechnolab.com/2011/01/17/android/simple-progress-bar-in-android-using-thread/包含实现进度条的示例。通过此示例,您可以轻松地启动,停止和播放进度条。