前台服务 - 设置不确定的进度条

Posted

技术标签:

【中文标题】前台服务 - 设置不确定的进度条【英文标题】:Foreground service - Setting an indeterminate progress bar 【发布时间】:2021-12-25 05:56:04 【问题描述】:

我正在使用indeterminate progress bar 创建前台服务。

public Notification createNotification() 
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_TEST)
                .setSmallIcon(R.drawable.ic_download_complete)
                .setContentTitle("Test title")
                .setContentText("Test content")

                .setProgress(someInt, someInt, true)  //What do I set for these two params before the boolean flag
                

                .setPriority(NotificationCompat.PRIORITY_LOW) 
                .setAutoCancel(true);

       
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) 
            NotificationManager notificationManager = this.getSystemService(NotificationManager.class);
            NotificationChannel channel = new NotificationChannel(
                    CHANNEL_TEST,
                    "Test notification", 
                    NotificationManager.IMPORTANCE_LOW 
            );
            notificationManager.createNotificationChannel(channel);
            notificationManager.notify(NOTIFICATION_ID, builder.build());
        

        return builder.build();
    

我试图了解我必须为.setProgress 中的两个 int 参数设置什么值。该方法中的最后一个布尔标志用于将其设置为确定或不确定progressbar。因此,如果它是确定的,我们可以将两个整数更新为我们想要的百分比.setProgress(100, 10, true),但是对于不确定我应该将值设置为什么?

我尝试检查该方法,但它并没有完全说明要使用什么来确定不确定性。由于传递 null 不是一种选择

【问题讨论】:

【参考方案1】:

As per documentation:

显示不确定的进度条(不指示 完成百分比),调用 setProgress(0, 0, true)。结果是一个 与上面的进度条具有相同样式的指示器,除了 进度条是连续动画,不表示 完成。

因此,您需要将两个int 值设置为0

【讨论】:

以上是关于前台服务 - 设置不确定的进度条的主要内容,如果未能解决你的问题,请参考以下文章

websocket推送进度条百分比给前台

.NET MVC中使用WebClient在后台下载文件,前台显示进度。

从后台任务或服务中确定当前前台应用程序

电商前台项目:完成Home首页模块业务

c# datagridview 绑定数据时逐行显示并且有进度条。问题如下:

Android,前台服务让app保持活力吗?