Pergunta

Alguém pode me dar um cenário em que acham que os cursores ocupados são justificados? Eu sinto que eles sempre são uma má ideia Da perspectiva de um usuário. Esclarecimento: Por cursores ocupados, quero dizer, quando o usuário não pode mais interagir com o aplicativo, eles só podem mover o ponteiro do mouse de ampulheta e apitar uma música.

Foi útil?

Solução

Eu acho que você pode estar certo: em um aplicativo assíncrono decente, você nunca precisa mostrar um cursor ocupado. O usuário sempre pode fazer algo Mesmo que a grande última operação esteja concluindo.

Dito isto, as vezes Aplicativos Java como Netbeans ou Eclipse, ou mesmo Visual Studio, penduram sem cursor ocupado e sem esperança. Mas, nesse caso, um cursor ocupado provavelmente também não ajudaria muito ... mas acho que você está certo: os cursores ocupados são de uma era não multitithreading para aplicativos. Nos aplicativos Flex, por exemplo, tudo é automaticamente orientado a eventos, portanto, definir um cursor ocupado ficaria sem sentido (embora possível, é claro).

Outras dicas

Em resumo, acho que o usuário deve ser impedido de fazer coisas no seu aplicativo somente quando o intervalo de espera for muito curto (2 segundos ou menos) e a sobrecarga cognitiva de fazer o multi-threading provavelmente resultará em um aplicativo menos estável. Para mais detalhes, veja abaixo.

Para uma operação duradoura Menos de 0,1 segundo, você geralmente não precisa ser assíncrono ou mesmo mostrar uma ampulheta.

Para uma operação duradoura entre 0,1 e 2 segundos, você geralmente não precisa ser assíncrono. Basta mudar o cursor para a ampulheta e fazer o trabalho em linha. A sugestão visual é suficiente para manter o usuário final feliz.

Se o usuário final iniciar uma operação que levará apenas alguns segundos, ele está em um modo de pensar "focado" no qual está subconscientemente esperando os resultados de sua ação, e ele não mudou seu cérebro consciente fora desse foco particular. Tão bloquear a interface do usuário - com um indicador visual de que isso aconteceu - é perfeitamente aceitável por um período tão curto de tempo.

Para uma operação duradoura Mais de 2 segundos, você geralmente deve ser assíncrono. Mas, mesmo assim, você deve fornecer algum tipo de indicador de progresso. As pessoas acham difícil se concentrar na ausência de estimulação e 2 segundos é longo o suficiente para que o usuário final seja naturalmente passar da atividade 'focada' consciente para a atividade consciente de 'espera'.

O indicador de progresso lhes dá algo para ocupá -los enquanto eles estão nesse modo de espera e também fornece os meios para determinar quando eles voltarão ao seu contexto 'focado'. As dicas visuais dão ao cérebro algo em torno de estruturar essas troca de contexto, sem exigir muito pensamento consciente.

Onde fica confuso é onde você tem uma operação que geralmente completa em x tempo, mas ocasionalmente leva y, onde Y é muito maior que X. Isso pode acontecer para ações remotas, como alcançar uma rede. É aí que você pode precisar de uma combinação das ações acima. Por exemplo, considere exibir um temporizador de ovos nos primeiros 2 segundos e só depois trazer seu indicador de progresso. Isso evita arrancar o usuário final do contexto 'focado' diretamente para o contexto 'esperando' sem uma etapa intermediária.

Não é especificamente o cursor movimentado que é importante, mas é importante, absolutamente, sempre Para dar feedback ao usuário, que algo está acontecendo em resposta à sua entrada. É importante perceber que, sem um cursor movimentado, barra de progresso, seu botão piscando, bastão em turbilhão, palhaço dançando .. não importa nada- se você não o possui, e o computador apenas está lá não fazendo nada, O computador parece quebrado para o usuário.

O feedback imediato para cada ação do usuário é incrivelmente importante.

Você mostra um cursor ocupado quando o usuário não pode fazer nada até que a operação seja concluída - incluindo a saída do aplicativo.

Acho interessante que você não veja cursores ocupados em navegadores da web - talvez por isso que as pessoas gostam tanto deles.

Não, espere, eu tenho uma resposta melhor. Você mostra um cursor movimentado quando o computador está pensando.

Quando se trata do botão Atualizar em um navegador da Web, o cursor ocupado deve aparecer imediatamente para dizer ao usuário para que eles saibam que uma página está sendo carregada.

Eu acho que foi Não me faça pensar Dito isto, o tempo de carregamento tolerável para o ser humano é zero segundo.

Google diz:

Responsivo

É possível escrever código que vence todos os testes de desempenho do mundo, mas que ainda envia os usuários com uma raiva de fogo quando tentam usá -lo. Estes são os aplicativos que não são responsivos o suficiente - aqueles que parecem lentos, pendurados ou congelados por períodos significativos ou demoram muito para processar a entrada.

Existem dois propósitos para isso:

  1. Indicar para o usuário que algo está acontecendo.
  2. Indique ao usuário que nada não pode ser feito agora.

O cursor ocupado é melhor sinal sobre a operação do que nada. Para operações duradouras, algo melhor deve ser usado. Por exemplo, os navegadores ainda estão operacionais quando uma página está sendo recuperada e há até um botão para interromper a operação. Como a interface do usuário é totalmente funcional, não há necessidade de usar cursor ocupado. No entanto, o cursor ocupado pode ser usado mesmo nesse tipo de situações nas fases de transição, como ao iniciar a operação ou quando a interrompa.

Eu tento usá -los em qualquer ação que possa levar de 0,5 a 3 segundos, para ações mais longas, acho que os indicadores de progresso com informações suficientes devem ser usados.

Percebi com o Fedora 8 pelo menos quando um aplicativo define o cursor "ocupado", o "ocupado interativo" é realmente exibido. Eu acho que isso ocorre porque o sistema ainda responde à entrada do mouse (como arrastar a janela etc.). Como um aparte, é complicado selecionar o cursor "ocupado interativo" no Linux: é complicado:http://www.pixelbeat.org/programming/x_cursors/

A única coisa que acredito que o cursor ocupado faz é informar ao usuário que ...

Não estou ignorando você, só estou fazendo outra coisa que pode levar algum tempo

Embora seja absolutamente necessário alertar o usuário de que seu aplicativo está fazendo alguma coisa, um cursor ocupado é útil apenas nos primeiros segundos de processamento. Para um atraso de mais de 15 a 20 segundos, algo mais deve ser apresentado, como uma barra de progresso, mensagem de status, caixa de mensagem, qualquer que seja. As pessoas assumem que seu software foi trancado após um minuto ou mais e tentará encerrá -lo. Às vezes, as dicas visuais gerais são tão importantes quanto um cursor ocupado.

Por exemplo, aplicativos com guias que não respondem com destaque apropriado até que a operação na guia seja concluída, atualizando a guia temporariamente até que todas as operações estejam concluídas. Às vezes, apenas um pouco de otimização ou refatoração limpa a capacidade de resposta da interface do usuário como essa.

Eu os usaria apenas para concluir rapidamente as coisas, como digamos, menos de meio segundo. Se algo levar mais tempo do que isso, uma caixa de diálogo de progresso deve pop -up, ou uma barra de progresso deve aparecer na barra de status ou em algum outro lugar da interface.

O usuário sempre deve ser capaz de cancelar a ação se demorar muito para concluir.

Em resposta ao comentário, o cursor ocupado só seria visível pelo meio segundo, pois uma vez que a caixa de diálogo de progresso chegar, deve mudar para ser um daqueles cursores "meio ocupados", ou apenas o cursor normal de seta.

Você deve evitar ter um cursor ocupado, exceto em circunstâncias extremas e, se acha que precisa de um, pense novamente e redesenhe.

Por exemplo, para indicar que você clicou em um botão, mesmo que não tenha feito o processamento do evento. Se não houvesse alguma indicação, o usuário pode tentar clicar no botão novamente, causando todo tipo de maldade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top