嘿家伙我正在开发一个应用程序,其中我运行asopTas在asycTask点击按钮,我想停止该任务点击其他按钮,如启动和停止但问题是一旦循环启动它不会听取任何其他事件,好像阻止ui线程我该怎么办?
答案 0 :(得分:3)
答案 1 :(得分:0)
尝试使用AsyncTask.cancel()
。
答案 2 :(得分:0)
您可以尝试以下方法:
你需要在你的AsyncTask中保留对你的Activity的引用才能做到这一点,所以为它做一个构造函数,它接受你的Activity类型的对象。
答案 3 :(得分:0)
我认为您需要实现它:
在您的活动中声明此内容,以便在OnClickListener中提供
onGoingTask ex;
然后在你的onCreate中输入这段代码,其中startButton和stopButton都是你应用上的按钮
startButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
ex.doInBackground();
ex = new ReloadHistoryTask();
ex.execute();
}
});
stopButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
ex.cancel(true);
}
});
然后,再往下,在同一个文件中,您将获得AsyncTask的声明
private class onGoingTask extends AsyncTask<Void, Void, Long[]> {
@Override
protected Long[] doInBackground(Void... params) {
Long[] myCount = {0L, 0L, 0L};
while(sflag==0) {
System.out.println("in while");
//code for gps data collection
myCount[2]++;
}
return myCount;
}
}
我觉得这样的东西应该适合你,你可以拿出Long []数组,如果你不需要它,我只是把它放在那里,因为我使用它,我觉得它可能很方便你了: - )