我在我的项目中遇到了一个非常愚蠢的问题,无法解决它。我使用AsyncTask来获取用户的当前位置。在那我用了一个计数器作为定时器工作。在doInBackground里面,我正在递增该计数器,如果它大于x值,那么我取消异步任务。for循环&while循环不工作在android中的asynctask doInBackground?
这里是代码片段: -
class CurrentPositionTask extends AsyncTask<String, Void, Void> {
long counter = 0;
boolean flag = true;
@Override
public void onPreExecute() {
// TODO Auto-generated method stub
}
@Override
public Void doInBackground(String... params) {
// TODO Auto-generated method stub
do {
counter++;
if (latitude != 0 && longitude != 0) {
flag = false;
}
} while (counter <= 100000);
return null;
}
@Override
public void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}
}
但这里的条件时不能正常工作。我也尝试了for循环而不是while,但那不适合我。也面临很奇怪的问题,当我打印计数器使用sysout其工作正常,但没有它不工作..
所有的建议,欢迎。
while循环之前,但在循环不是working.I也想你的建议,... 我想是等待10-20秒然后我需要打破循环,但循环打破所有的时间,并转到onPostExecute方法。然后,为了调试我sysout柜台在那个时候它的工作非常好.. – Scorpion
@Scorpion:似乎'纬度和经度'是0? –
现在我改变了条件,我只使用计数器..基本上我想要的是等待20-30秒获取位置,如果在此期间没有找到,然后转到下一个屏幕......所以我使用计数器变量作为计时器... – Scorpion