gpt4 book ai didi

android - 使用 WorkManager 时是否可以在通知区域显示进度条 - 就像 WhatsApp 数据同步一样

转载 作者:行者123 更新时间:2023-11-29 00:56:18 25 4
gpt4 key购买 nike

目前,如果我们的设备连接到 WiFi,WhatsApp 将通过在通知区域显示进度条来执行同步到云端。

enter image description here

我想知道,如何使用 WorkManager 实现这一点?目前,我知道我可以为 WorkManager 设置特定的约束来运行后台作业。

  1. 延迟时间
  2. 网络限制

但是,我们如何通过 WorkManager 显示通知 UI?

最佳答案

这是我认为可以提供帮助的东西。这个想法是创建一个工作人员并使用您的逻辑来获取进度并将更新显示为使用处理程序的通知。

注意:此代码未经测试,我使用它只是为了解释方法

worker 代码

public class CompressWorker extends Worker {

public CompressWorker(@NonNull Context context, @NonNull WorkerParameters params) {
super(context, params);
}

@NonNull
@Override
public Result doWork() {
ProgressManager manager = new ProgressManager();
int i = 0;
while(i<100){
i++;
try {
Thread.sleep(1000);
manager.updateProgress(i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Log.i("Ansh", "worker's job is finished");
// Indicate success or failure with your return value:
return Result.success();

// (Returning Result.retry() tells WorkManager to try this task again
// later; Result.failure() says not to try again.)
}}

还有另一个类使用处理程序将更新发送到通知

public class ProgressManager {

Context context;
NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context);

Handler handler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
context);
notificationBuilder.setProgress(100, msg.arg1, true);
Notification notification = notificationBuilder.build();
notificationManagerCompat.notify(1000, notification);
}
};


public void updateProgress(int val) {
Message msg = new Message();
msg.arg1 = val;
handler.sendMessageDelayed(msg, 1000);
}}

关于android - 使用 WorkManager 时是否可以在通知区域显示进度条 - 就像 WhatsApp 数据同步一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54603045/

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