另一个随机问题打击了我(过去5个小时我喝了9杯咖啡,很抱歉......) - 你会向用户展示什么样的进度条不知道需要多长时间,但你对“平均”时间有一个很好的了解。例如,一项通常需要大约30秒的任务,但您无法知道进度(除非它仍在进行或只是失败)。什么是最好的用户体验?:
如果平均时间是10分钟而不是30秒,答案会有所不同吗?
谢谢, 罗伯特
修改
为了清楚起见,问题是关于进度条,你不知道/指示需要多长时间(例如,在远程机器上执行任务)。如果你确实有一些进展的迹象,那么使用它通常是好的。
答案 0 :(得分:6)
可用性研究(我找不到pdf)显示,在完全相同的持续时间内,加载具有不同模式的条形(指数,线性,logaritmig),那些“感觉更快”的条形,其中完成指数的那些。我的意思是,那些开始缓慢,但随着时间的推移变得更快。
我通常做的是:
不要骗你的用户。 从不告诉他们一分钟后它将会结束半小时后仍在运行。
答案 1 :(得分:6)
答案 2 :(得分:3)
绝对是理发杆的进度条。我认为这是Mac人机界面指南(HIG)的标准。我相信其他平台也存在类似的“未定义”进度条。
我还会放一个文本进度指示器(例如,传输的字节数)。 “猜测”完成百分比是可行的,但你肯定应该非常确定平均时间和标准偏差,否则你会让很多愤怒的用户生气并点击取消,因为你的一小时后进度停留在99%。这对他们和你的软件的声誉来说会非常烦人。
答案 3 :(得分:3)
进度条是否以精确恒定的速率移动并不重要。事实上,从字面上看,这肯定几乎是不可能的。您如何提前知道哪些因素可能会加速或减缓实际进展?
因此,我选择了可以完成的工作量和跟踪百分比完成情况的任何方便的衡量标准。如果要传输的字节数,要处理的记录数,条形码的数量,等等。所以可以肯定的是,它有时会快速启动然后减速,反之亦然。但真正重要的是,只要这个过程正在努力完成,它就会继续发展。
我认为,当你事先并不知道任何合理的工作量时,问题就在于。比如,你必须处理一组记录,但除了阅读所有记录并计算它们之外,你没有简单的方法来获取记录数,一旦你完成了这些记录,你可能只是沿着它处理它们。办法。在这些情况下,我通常采用“进度计数”来代替进度条:例如“处理1条记录”,“处理2条记录”等。至少用户可以看到它正在移动,并且在他完成之后很多时候,他可能已经知道它将走多远,即数万甚至数十万或其他什么。
我正在研究一个现在经常使用我认为相当蹩脚的方法的系统:它们只是将任意百分比附加到任何方便的检查点。就像一个函数读取一堆数据,对它进行排序,格式化并打印它们一样,它们在读取完成时会说25%,在完成排序时会说50%,格式化完成时会是75%,然后是100%时打印完成。我想它总比没有好。
答案 4 :(得分:2)
我从来没有见过它,但是进度条上的滑动窗口怎么样,这样你就可以看到工作是在进步,速度是多少,但最终还是会有所改善。对进度栏进行月球行走的排序。您需要使动画与众不同,以便用户可以判断正在添加新的blob,并且最旧的blob向左滑动。当程序确定它知道到任务结束的距离时,滑动停止。
答案 5 :(得分:2)
最好的策略是简单明了。告诉已知的事情,并设定正确的期望。
如果可以花费很长时间,最好是冗长,例如:
==============================================================================
Executing command xyz..
Started: 10:30 AM (usually requires about 20 minutes to complete)
Status: 10:35:10 AM.. Still working...{this line needs to update frequently}
[Send to background] [Cancel]
==============================================================================
我在某些大型安装程序中看到了这种冗长的描述;不记得究竟在哪里,但它可能是操作系统或服务器软件。像“这项任务可能需要几分钟才能完成”这样的短语在安装人员中也并不少见。
如果任务通常需要很短的时间才能完成(例如30秒),但有时可能需要更长的时间,最好只显示任务未挂起或其他功能失调的指示,当且仅当它能够确定。即,如果你可以确定任务没有死或挂。如果您最终用户不确定该任务的进展情况,最好只显示一个后台选项(让用户在其继续时执行其他操作)或取消选项(如果任务可以被取消)。
典型示例是数据库管理控制台,允许用户在数据库上执行SQL查询。通常,查询在几秒钟内就会得到满足,但很少会出现查询需要大型笛卡尔积,创建多个临时表,等待锁被清除等等可能需要几分钟的情况。管理控制台软件无法确定查询可能需要多长时间,因为有关查询预期执行时间的所有信息只能由数据库服务器知道。在这种情况下:
无法确定需要多长时间。
也无法确定数据库服务器是否陷入死锁或挂起
最糟糕的是,您无法取消查询执行。
在这种情况下,唯一的好处就是让用户“背景”完成任务。
答案 6 :(得分:1)
为什么不在方法中完成任务时增加进度条?
任务或过程花费多长时间是无关紧要的,当任务的Y部分完成时,可以简单地将进度条的值增加X量,或者你是进入过程的Z. (即每100千字节文件上传处理的每5千字节)