android - 如果AsyncTask未完成,如何设置固定时间

标签 android android-asynctask

我有一个异步任务,如果异步花费太长时间,我希望等待,我正在下载数据库的一些数据,但我不想让用户在进度对话框中循环,我想要设置一个固定的时间,假设我正在下载一个文件,但需要很长时间,所以我告诉用户,“嘿,检查你的互联网连接,然后重试”我希望用计时器来做到这一点,但我有点卡住了,这是我执行异步任务的地方

private class DownloadFilesTask extends AsyncTask<Void, Void, Void> {
             String s;
             public DownloadFilesTask(String s){
                 this.s = s;
             }

             @Override
             protected Void doInBackground(Void... voids) {
                 DownloadMethod(s);
                 return null;
             }
         }

假设我想在固定的时间(10 或 20 秒)执行该下载方法,如果当时没有下载文件,我会向用户返回一条消息,说他需要检查他的互联网。

最佳答案

您可以使用处理程序在一定时间后运行并维护一个 bool 标志,您可以在异步任务的 postExecute 函数中更新该标志。

在您的 Activity/fragment 类中:

new Handler().postDelayed(new Runnable(){
          public void run(){
                   //Check whether the flag has been updated or not
             },1000)

关于android - 如果AsyncTask未完成,如何设置固定时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48118661/

相关文章:

android - Flutter:WAITING异步无效方法

android - AsyncTask 缺少返回语句

android - 将文本输入更改为也将 "u"视为 "ü",将 "ss"视为 "ß"等以获取单词建议

android - 以编程方式获取用于文本输入的不同键盘

java - 用于 Fragment 的 AsyncTask 结果

android - 如何从 AsyncTask 向布局添加 View

java - 进度对话框中的许多方法无法解决

java - 在异步线程 Android 中显示进度对话框

android - 将屏幕坐标转换为 OpenGL 坐标

android - TextView 超出屏幕