Java 异步任务后停止基于处理程序的Runnable
我对Android编程相当陌生 我的问题的简单解释: 我有一个异步任务,根据这个可运行的命令,每隔20秒收集一次基于JSON的数据: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
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秒在后台继续运行。我怎样才能阻止它呢?很好,如果它有效,那么请接受正确的答案。你的第二个问题似乎无关,没有代码我怎么知道,我认为你最好打开一个新的问题。。。