Android 强制停止、终止或取消任务

Android 强制停止、终止或取消任务,android,android-asynctask,ui-thread,Android,Android Asynctask,Ui Thread,我试图在onPause()方法上停止AsyncTask。 但它并没有停止。当我的应用导航到其他活动时,任务仍在工作中 这是我的密码。。。运动1、运动2和运动3是图像视图 class parseComments extends AsyncTask<String, Integer,String> { @Override protected String doInBackground(String... arg0) { // TODO Auto-gene

我试图在onPause()方法上停止AsyncTask。 但它并没有停止。当我的应用导航到其他活动时,任务仍在工作中

这是我的密码。。。运动1、运动2和运动3是图像视图

class parseComments extends AsyncTask<String, Integer,String> 
{

    @Override
    protected String doInBackground(String... arg0) {
        // TODO Auto-generated method stub
        cancel(true);
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                centerImage.setVisibility(View.INVISIBLE);
                Motion1.setVisibility(View.VISIBLE);
                guiLayout1.addView(authHint1);
                 DisplayMetrics metrics = getApplicationContext().getResources().getDisplayMetrics();
                    int width = metrics.widthPixels;
                    int height = metrics.heightPixels;
                TextView textView = new TextView(guiLayout1.getContext());

                mProgressBar = new ProgressBar(guiLayout1.getContext(), null, android.R.attr.progressBarStyleHorizontal);
                Resources res = getResources();
                mProgressBar.setProgressDrawable(res.getDrawable( R.drawable.my_progress));
                //mProgressBar.setProgress(50);         
                FrameLayout.LayoutParams params = new FrameLayout.LayoutParams((int)(width/(float)1.5), 22);
                params.setMargins(0, (int) (height /(float) 4.7) , 0, 0);
                params.gravity= Gravity.CENTER_HORIZONTAL;
                mProgressBar.setLayoutParams(params);

                guiLayout1.addView(textView); 
                guiLayout1.addView(mProgressBar);
                progressStatus = 60;
                mProgressBar.setProgress(progressStatus);

                Vibrator v= (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
                v.vibrate(200);
                progressStatus += 10;
                mProgressBar.setProgress(progressStatus);                               
                //authHint1.nextStep();

            }
        });
        try {
            Thread.sleep(timeInterval * 1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        runOnUiThread(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);
                authHint1.nextStep();
            }
        });

        try {
            Thread.sleep(timeInterval * 1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        runOnUiThread(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);
                authHint1.nextStep();
            }
        });

        try {
            Thread.sleep(timeInterval * 1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return null;
    }
    protected void onPostExecute() {
    }

    @Override
    protected void onPreExecute() {


    }
}
类parseComments扩展异步任务
{
@凌驾
受保护的字符串doInBackground(字符串…arg0){
//TODO自动生成的方法存根
取消(真);
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
centerImage.setVisibility(视图不可见);
动作1.设置可见性(View.VISIBLE);
guiLayout1.addView(authHint1);
DisplayMetrics metrics=getApplicationContext().getResources().getDisplayMetrics();
int width=metrics.widthPixels;
int height=metrics.heightPixels;
TextView TextView=newtextView(guiLayout1.getContext());
mProgressBar=newprogressbar(guiLayout1.getContext(),null,android.R.attr.progressBarStyleHorizontal);
Resources res=getResources();
mProgressBar.setProgressDrawable(res.getDrawable(R.drawable.my_progress));
//mProgressBar.setProgress(50);
FrameLayout.LayoutParams params=新的FrameLayout.LayoutParams((int)(宽度/(浮动)1.5),22);
参数设置边距(0,(int)(高度/(浮动)4.7),0,0);
参数重力=重心水平;
mProgressBar.setLayoutParams(参数);
guiLayout1.addView(textView);
guiLayout1.addView(mProgressBar);
进展状态=60;
mProgressBar.setProgress(progressStatus);
可控震源v=(可控震源)getSystemService(Context.可控震源_服务);
v、 振动(200);
进展状态+=10;
mProgressBar.setProgress(progressStatus);
//authHint1.nextStep();
}
});
试一试{
线程睡眠(时间间隔*1000);
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
运动1.设置可见性(视图不可见);
动作2.设置可见性(View.VISIBLE);
可控震源v=(可控震源)getSystemService(Context.可控震源_服务);
v、 振动(200);
进展状态+=10;
mProgressBar.setProgress(progressStatus);
authHint1.nextStep();
}
});
试一试{
线程睡眠(时间间隔*1000);
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
动作2.设置可见性(视图不可见);
动作3.设置可见性(View.VISIBLE);
可控震源v=(可控震源)getSystemService(Context.可控震源_服务);
v、 振动(200);
进展状态+=10;
mProgressBar.setProgress(progressStatus);
authHint1.nextStep();
}
});
试一试{
线程睡眠(时间间隔*1000);
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回null;
}
受保护的void onPostExecute(){
}
@凌驾
受保护的void onPreExecute(){
}
}
我打过电话 新建parseComments().cancel(true)

但它不起作用。
我怎样才能阻止它呢?

我能给你的最好答案是:请阅读文档:

还有一些问题要问你:
1) 为什么您希望在
doInBackground
方法中调用
cancel(true)
将退出此方法?阅读文档以明确这一点。
2) 如果代码在UI线程中运行,那么使用AsyncTask的原因是什么? 阅读文档以了解如何以及在何处使用异步任务。

取消异步任务的示例