gpt4 book ai didi

android - 为什么 NotificationManager 在更新过程中运行如此缓慢?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:15:34 25 4
gpt4 key购买 nike

我通过 NotificationManager 发布文件上传进度,但在更新其进度 UI 时卡住。

我使用缓存在类字段中的 NotificationCompat.Builder。所以进度发布非常简单:

manager.notify(id, uploader.
setProgress(MAX_PROGRESS, (int) (progress * 100), false).
build()
);

更新进度保证从主线程执行(包装在 Handler 装饰器中)。

this.request.setCallback(new UploaderDecorator(this.request.getCallback()));

现公布进展如下:

long total = file.length();
long uploaded = 0;
int bytesRead = input.read(buffer, 0, bufferSize);
while (bytesRead > 0) {
output.write(buffer, 0, bufferSize);
uploaded += bytesRead;
callback.onUploadProgress(activeFile, ((float) uploaded / total));
bytesRead = input.read(buffer, 0, bufferSize);
}

那么为什么它运行这么慢?

最佳答案

这是一种常见的行为。你不应该用频繁的更新淹没 NotificationManager。您应该确定一个更新间隔,例如每秒两次。

例如,

long startTime;
long elapsedTime = 0L;

if (elapsedTime > 500) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
mBuilder.setProgress(100, (int) newValue, false);
mNotifyManager.notify(notificationID, mBuilder.build());

startTime = System.currentTimeMillis();
elapsedTime = 0;
}
});

Log.d("Andrognito", newValue + "Progress");
}
else
elapsedTime = new Date().getTime() - startTime;

这对我来说非常有效,也不会卡住通知。

关于android - 为什么 NotificationManager 在更新过程中运行如此缓慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18043568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com