RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 778676
Accepted
Вячеслав
Вячеслав
Asked:2020-02-01 19:35:23 +0000 UTC2020-02-01 19:35:23 +0000 UTC 2020-02-01 19:35:23 +0000 UTC

下载文件时如何阻止活动?

  • 772

你好!我有一个活动,它有一个按钮可以从服务器下载一本书。当我单击它时,我想在下载文件时一直显示进度条。总而言之,一个典型的任务。但是加载了几个文件,使用. 而且我不知道如何在加载所有文件时阻止活动中的操作并显示进度条。该库在单独的线程中加载文件。也许我可以直接在 UI 线程中上传文件,而不需要库?那么在加载文件之前,用户肯定不会做任何事情。但这是一个坏主意,恕我直言,如果连接不是很好,它将失败。告诉我,往哪个方向去“挖”,或许有一些例子?

这是我加载文件并写入内存的方法:

private void downloadFilesBook(String[] urlsFiles) {
        mFetch = Fetch.newInstance(this);
        String folderB = "bookfiles_" + bookId;
        String fileNameForWrite = "book_" + bookId + ".json";

        File bookfolder = new File(String.valueOf(getExternalFilesDir(folderB)));
        ArrayList<String> pagesFiles = new ArrayList<>();

        for (int i = 0; i < urlsFiles.length; i++) {
            String url = urlsFiles[i];
            String path = String.valueOf(bookfolder);
            String fileName = Uri.parse(url).getLastPathSegment();
            Log.d("my2", fileName);
            Request request = new Request(url, path, fileName);
            String pageFilePath = path + "/" + fileName;
            Log.d("my2", pageFilePath);
            pagesFiles.add(pageFilePath);
            downloadId = mFetch.enqueue(request);
        }

        BookFiles bookFiles = new BookFiles();
        bookFiles.setBookID(bookId);

        ArrayList<String> pagesPath = getPagesArray(pagesFiles);
        ArrayList<String> soundsPath = getSoundsArray(pagesFiles);

        bookFiles.setPagesPath(pagesPath);
        bookFiles.setSoundsPath(soundsPath);
        Gson gson11 = new Gson();
        String filesJson = gson11.toJson(bookFiles);

        MyJSON.saveData(getApplicationContext(), filesJson, fileNameForWrite);
    }
android
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    pavlofff
    2020-02-01T19:53:22Z2020-02-01T19:53:22Z

    有一个用于加载事件的侦听器(这在文档中):

    final FetchListener fetchListener = new FetchListener() {
        @Override
        public void onQueued(@NotNull Download download) {
           // очередь
        }
    
        @Override
        public void onCompleted(@NotNull Download download) {
           // завершено
        }
    
        @Override
        public void onError(@NotNull Download download) {
          // ошибка
        }
    
        @Override
        public void onProgress(@NotNull Download download, long etaInMilliSeconds, long downloadedBytesPerSecond) {
           // в процессе загрузки
        }
    
        @Override
        public void onPaused(@NotNull Download download) {
           // на паузе
        }
    
        @Override
        public void onResumed(@NotNull Download download) {
           // продолжено (после паузы)
        }
    
        @Override
        public void onCancelled(@NotNull Download download) {
           // отменено
        }
    
        @Override
        public void onRemoved(@NotNull Download download) {
            // перемещено
        }
    
        @Override
        public void onDeleted(@NotNull Download download) {
            // удалено
        }
    };
    
    fetch.addListener(fetchListener);
    

    在启动下载之前,在活动顶部显示一个带有进度条(或其他显示下载的内容)的对话框。释放onCompleted()您的锁定并删除进度条。还值得处理其他状态(错误、暂停、取消、删除等)

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5