Java 在Android中,每特定时间调用一个方法,并在特定条件下停止调用
我在Android中的Java类中有一个名为check的方法,我使用以下方法每30秒调用一次。我的问题是,当名为Java 在Android中,每特定时间调用一个方法,并在特定条件下停止调用,java,android,Java,Android,我在Android中的Java类中有一个名为check的方法,我使用以下方法每30秒调用一次。我的问题是,当名为stopFlag的变量等于1时,我想停止调用它,但我无法使用timer.cancel() 以下是我的方法: public void callAsynchronousTask() { final Handler handler = new Handler(); Timer timer = new Timer(); TimerTask d
stopFlag
的变量等于1时,我想停止调用它,但我无法使用timer.cancel()
以下是我的方法:
public void callAsynchronousTask()
{
final Handler handler = new Handler();
Timer timer = new Timer();
TimerTask doAsynchronousTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
check(currentDistance);
} catch (Exception e) {
Log.e(TAG,e.getMessage());
}
}
});
}
};
if( stopFlag==1){
timer.cancel();
timer.purge();
return;
}
else
timer.schedule(doAsynchronousTask, 0, 30000); //execute in every 30000 ms
}
//检查方法
public void check(double oldDistance)
{
currentDistance=measureDistance(myLoc.getLatitude(),myLoc.getLongitude(),RetrieveStationId.getStation_lat(),RetrieveStationId.getStation_lon());
if(currentDistance>=0 && currentDistance <200)
{
Log.e("Diff",Double.toString(oldDistance-currentDistance));
joined=0;
Join.setBackgroundResource(R.drawable.circle_button);
StateListDrawable drawable = (StateListDrawable) Join.getBackground();
drawable.setColorFilter(Color.rgb(238,238,238),PorterDuff.Mode.MULTIPLY);
updateMarker();updateCamera();
stopFlag=1;
}
else if(oldDistance-currentDistance>0)
{
Log.e("Diff",Double.toString(oldDistance-currentDistance));
joined=1;
Join.setBackgroundResource(R.drawable.circle_button);
StateListDrawable drawable = (StateListDrawable) Join.getBackground();
drawable.setColorFilter(Color.rgb(100,100,100),PorterDuff.Mode.MULTIPLY);
}
UpdateLocation updateLocation = new UpdateLocation(this);
updateLocation.execute(latitude, longitude,iden,Integer.toString(request),destination,Integer.toString(joined));
updateMarker();
updateCamera();
}
公共无效检查(双倍距离)
{
currentDistance=measureDistance(myLoc.getLatitude()、myLoc.getLength()、RetrieveStationId.getStation\u lat()、RetrieveStationId.getStation\u lon());
如果(currentDistance>=0&¤tDistance 0)
{
Log.e(“Diff”,Double.toString(oldDistance currentDistance));
联合=1;
Join.setBackgroundResource(R.drawable.circle_按钮);
StateListDrawable-drawable=(StateListDrawable)Join.getBackground();
drawable.setColorFilter(Color.rgb(100100100),PorterDuff.Mode.MULTIPLY);
}
UpdateLocation UpdateLocation=新的UpdateLocation(此);
execute(纬度、经度、iden、Integer.toString(请求)、destination、Integer.toString(连接));
updateMarker();
updateCamera();
}
您是否忘记将stopFlag
设置为1?如果您需要帮助,您需要发布,并且您的问题不完整,因为您没有显示在哪里修改stopFlag
的值,您可以使用Android Jov实现同样的功能!什么是Android Jov?MohamedI在我添加的检查方法中设置了停止标志,请阅读-总结是,这不是一种向志愿者讲话的理想方式,并且可能会对获得答案产生反作用。请不要将此添加到您的问题中。您是否忘记将stopFlag
设置为1?如果您需要帮助,您需要发布,并且您的问题不完整,因为您没有显示在哪里修改stopFlag
的值,您可以使用Android Jov实现同样的功能!什么是Android Jov?MohamedI在我添加的检查方法中设置了停止标志,请阅读-总结是,这不是一种向志愿者讲话的理想方式,并且可能会对获得答案产生反作用。请不要将此添加到您的问题中。