Java 异步任务后停止基于处理程序的Runnable

Java 异步任务后停止基于处理程序的Runnable,java,android,android-asynctask,handler,runnable,Java,Android,Android Asynctask,Handler,Runnable,我对Android编程相当陌生 我的问题的简单解释: 我有一个异步任务,根据这个可运行的命令,每隔20秒收集一次基于JSON的数据: Handler handler = new Handler(); final Runnable r = new Runnable() { public void run() { mTask = new JSONParse(); mTask.execute(); handler.postDelayed(thi

我对Android编程相当陌生

我的问题的简单解释:

我有一个异步任务,根据这个可运行的命令,每隔20秒收集一次基于JSON的数据:

Handler handler = new Handler();

final Runnable r = new Runnable() {
    public void run() {
        mTask = new JSONParse();
        mTask.execute();
        handler.postDelayed(this, 20000);
    }
};
我想停下来的时候怎么停

我的问题的详细解释:

在这个异步任务中,我检查数据是否可用,如果不可用,首先调用

mTask.cancel(true);
然后在取消的方法中,如下所示:

protected void onCancelled() {
        // TODO Auto-generated method stub
        super.onCancelled();
        mTask.cancel(false);
        pDialog.dismiss();
        displayWrongPhoneToast();
    }
public void displayWrongPhoneToast() {
    Toast.makeText(getApplicationContext(),
            "Sorry! Enter at least one field to continue.",
            Toast.LENGTH_SHORT).show();
    Intent intent = new Intent(TabActivity.this, MainActivity.class);
    startActivity(intent);
}
其中DisplayErrorPhoneToast是一个简单的函数,如下所示:

protected void onCancelled() {
        // TODO Auto-generated method stub
        super.onCancelled();
        mTask.cancel(false);
        pDialog.dismiss();
        displayWrongPhoneToast();
    }
public void displayWrongPhoneToast() {
    Toast.makeText(getApplicationContext(),
            "Sorry! Enter at least one field to continue.",
            Toast.LENGTH_SHORT).show();
    Intent intent = new Intent(TabActivity.this, MainActivity.class);
    startActivity(intent);
}
我遇到的问题是,处理程序导致runnable在后台执行,这使得应用程序请求数据一次又一次地执行,并导致DisplayErrorPhoneToast一次又一次地执行

我尝试了一些我在网上找到的方法来阻止runnable,但它拒绝了。感谢您的帮助。谢谢:

你必须打电话

handler.removeCallbacks(r).

是的,这很有效。尽管如此,如果我在主屏幕中键入一个有效的条目,然后按“上一步”按钮返回主屏幕,则正确的进程永远不会终止,并且每20秒在后台继续运行。我怎样才能阻止它呢?很好,如果它有效,那么请接受正确的答案。你的第二个问题似乎无关,没有代码我怎么知道,我认为你最好打开一个新的问题。。。