在我的android应用程序中,我在线提取歌词。这个任务在后台使用AsyncTask类执行。在doInbackground()中,我调用另一个类获取歌词的方法。我想使用AsyncTask的cancel()方法停止从mycurrent活动执行其他类的方法。但它不会停止当前活动外的方法的执行。有没有办法停止执行该方法的执行?当用户滑动屏幕时,停止执行AsyncTask的doInbackground()方法
这里是我的代码..
public class musicplayer extends Activity
{
DownloadWebPageTask task;
public void playSong(int songIndex)
{
task = new DownloadWebPageTask();
task.execute(new String[] { title, artist });
}
private class DownloadWebPageTask extends AsyncTask<String, String, String>
{
@Override
protected void onPreExecute()
{
try
{
super.onPreExecute();
progressBar = (ProgressBar) findViewById(R.id.showLoading);
}
catch (Exception e)
{
e.printStackTrace();
}
}
@Override
protected String doInBackground(String... arg0)
{
try
{
if(! isCancelled())
{
// get lyrics
lyricsArray = SearchHelper.findLyrics(arg0[0], arg0[1]);
publishProgress(OutputString);
}
else
{
System.out.print("Cancelled");
}
}
catch (Exception ex) {
ex.printStackTrace();
}
return artistArray;
}
@Override
protected void onProgressUpdate(String... st)
{
super.onProgressUpdate(st);
progressBar.setVisibility(View.GONE);
tvMain.setText(Html.fromHtml(st[0].toString()));
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY)
{
try
{
task.cancel(true);
playSong(currentSongIndex + 1);
}
}
}
具备检测挥笔您尝试在Activity onpause中取消AsyncTask执行? –