【发布时间】:2014-06-24 10:58:04
【问题描述】:
我对 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);
然后在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() 一遍又一遍地执行。
我尝试了一些我在网上找到的方法来停止可运行文件,但它拒绝了。任何帮助表示赞赏。谢谢:)
【问题讨论】:
标签: java android android-asynctask handler runnable