Android 强制停止、终止或取消任务
我试图在onPause()方法上停止AsyncTask。 但它并没有停止。当我的应用导航到其他活动时,任务仍在工作中 这是我的密码。。。运动1、运动2和运动3是图像视图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
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的原因是什么? 阅读文档以了解如何以及在何处使用异步任务。
取消异步任务的示例