You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Foreground Service设置indeterminate progress bar时setProgress参数如何配置

正确配置方案

当setProgress方法的第三个布尔参数(用于控制是否为不确定进度模式)设置为true时,前两个int参数直接传入0, 0即可,系统在不确定进度模式下会完全忽略这两个参数的取值,不会对进度条展示产生任何影响。

补充说明

  • 只有当第三个参数设置为false(确定进度模式)时,前两个参数才会生效,分别对应「进度总最大值」和「当前已完成进度」,比如要展示10%的进度可以写.setProgress(100, 10, false)。
  • 你现有代码存在两个可优化点:
    • 通知渠道只需在应用首次启动时创建一次即可,不需要每次生成通知都重复执行创建逻辑,多次调用创建方法不会报错但属于无效执行。
    • 原代码中notificationManager.notify调用写在了Android O及以上的判断分支里,会导致7.0及更低版本的系统收不到这条通知,需要把这行代码移到判断分支外面。

修正后的代码片段

public Notification createNotification() {
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_TEST)
            .setSmallIcon(R.drawable.ic_download_complete)
            .setContentTitle("Test title")
            .setContentText("Test content")
            // 不确定进度模式下直接填0,0即可
            .setProgress(0, 0, true)
            .setPriority(NotificationCompat.PRIORITY_LOW)
            .setAutoCancel(true);

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

内容的提问来源于stack exchange,提问作者WHOATEMYNOODLES

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:45:04