我对Android编程很新。
我的问题的简单解释:
我有一个异步任务,根据此runnable每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);
然后在onCancelled()方法中如下:
protected void onCancelled() {
// TODO Auto-generated method stub
super.onCancelled();
mTask.cancel(false);
pDialog.dismiss();
displayWrongPhoneToast();
}
其中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在后台执行,这会一次又一次地使应用程序请求数据并导致displayWrongPhoneToast()一遍又一遍地执行。
我尝试了一些我在网上找到的方法来阻止runnable,但它拒绝了。任何帮助表示赞赏。谢谢:))
答案 0 :(得分:0)
你必须致电
handler.removeCallbacks(r).