首页 > 解决方案 > ProgressBar 更改进度

问题描述

我正在创建一个应用程序,用户可以在其中输入特定的字节值,并且我正在使用工作管理器来模拟他们的上传进度。所以,基本上是这样的:

int size = 50000; // Depends on what kind of file size the user wants to mimic
for(int i = 0; i < size; i++) {
   //Increase progress
   UploadFile.setUploadProgress(i);
}

此代码在工作管理器中。这UploadFile.java是我的活动。

WhileUploadFile.setUploadProgress(int progress)是我活动中的静态函数,如下所示:

public static void setUploadProgress(int progress) {
   progressBar.setProgress(progress);
}

progressBar是我的进度条,定义为:

private static ProgressBar progressBar;

但这是静态的,因此发生内存泄漏是合乎逻辑的。我知道我们可以ThreadLocal<>()在 AsyncTask 中使用来避免这种情况,但是我们可以在活动中使用什么东西并使用静态函数来避免内存泄漏?还是有更好的方法来做到这一点?

如果这是重复的,请指出正确的方向,因为我找不到任何东西。

标签: javaandroid

解决方案


WorkManager 用于后台作业。据我所知,您只能输出 WorkManager 的最终结果,并在代码中随心所欲地使用它 - 请注意,您可以从 CoroutineWorker 扩展来处理协程或从 RxWorker 扩展来处理 RxJava2。如果我是你,我会将上传进度限定为正在运行的活动/片段,并且仅当应用程序进入后台时才将其专用于 WorkManager。从 WorkManager,我可以生成通知,通知用户进度。


推荐阅读