Java 在Android中,每特定时间调用一个方法,并在特定条件下停止调用

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

我在Android中的Java类中有一个名为check的方法,我使用以下方法每30秒调用一次。我的问题是,当名为
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在我添加的检查方法中设置了停止标志,请阅读-总结是,这不是一种向志愿者讲话的理想方式,并且可能会对获得答案产生反作用。请不要将此添加到您的问题中。