【发布时间】:2014-05-19 09:42:45
【问题描述】:
我正在处理AsyncTask。
我正在尝试阻止AsyncTask。
authenticationArrows mTask = new authenticationArrows();
mTask.execute();
我试图阻止它
mTask.cancel(true);
但它不会停止。
我的AsyncTask 代码如下。
class authenticationArrows extends AsyncTask<Void, Void, Boolean>
{
@Override
protected void onCancelled() {
super.onCancelled();
cancel(true);
// ask if user wants to try again
}
@Override
protected Boolean doInBackground(Void... params) {
return null;
}
protected void onPostExecute() {
}
@Override
protected void onPreExecute() {
if (!isCancelled()){
handler.post(new Runnable() {
@Override
public void run() {
centerImage.setVisibility(View.INVISIBLE);
tiltMotion1.setVisibility(View.VISIBLE);
progressStatus = 60;
mProgressBar.setProgress(progressStatus);
Vibrator v= (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(200);
progressStatus += 10;
mProgressBar.setProgress(progressStatus);
}
});
}
if (!isCancelled()){
handler.postDelayed(new Runnable() {
@Override
public void run() {
Motion1.setVisibility(View.INVISIBLE);
Motion2.setVisibility(View.VISIBLE);
Vibrator v= (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(200);
progressStatus += 10;
mProgressBar.setProgress(progressStatus);
startHandler();
}
}, 1000);
}
}
public void startHandler(){
if (!isCancelled()){
handler.postDelayed(new Runnable() {
@Override
public void run() {
Motion2.setVisibility(View.INVISIBLE);
Motion3.setVisibility(View.VISIBLE);
Vibrator v= (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(200);
progressStatus += 10;
mProgressBar.setProgress(progressStatus);
}
}, 1000);
}
}
}
导航到其他活动或应用程序进入后台时如何停止或取消它?
【问题讨论】:
-
我相信你不能强行停止它,只要求它准备好时停止。
-
您要停止异步任务还是要停止您创建的异步任务中的线程?