| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/06/2011 20:45:40
|
fenrir
JavaEvangelist
Membro desde: 26/09/2002 13:06:19
Mensagens: 328
Localização: São Paulo
Offline
|
Na minha aplicação eu uso uma notificação para mostrar o andamento do upload, e olhando no consumo de CPU durante o processo (através de um top no shell) constatei que o processo com.android.systemui é o que mais está consumindo recursos da CPU. Só há um detalhe: a tela está desligada, portanto não deveria haver processamento de UI.
O Android que não cuida disso (evitar processamento quando a tela não está ligada) e eu é que preciso evitar essas atualizações, ou é um bug do sistema operacional?
|
Tem um Android? Gosta de tirar fotos? Que tal subi-las automaticamente para a internet? Dê uma olhada: http://autouploader.aguilarj.com |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2011 10:22:24
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
Acontece que no Android, o multi-tarefas é real.
A Activity tem alguns métodos que te avisam sobre o estado que ela vai se tornar.
De uma olhada no life-cycle nos docs dessa classe.
http://developer.android.com/reference/android/app/Activity.html
|
Facebook @MarkyHitchhiker +Mark WP: MarkyTech's
Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais
DefaultTableModel?! PARE! Não faça isso! Faça melhor!
Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
DON'T PANIC!
MarkyHitchhiker's Blog! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2011 11:00:01
|
fenrir
JavaEvangelist
Membro desde: 26/09/2002 13:06:19
Mensagens: 328
Localização: São Paulo
Offline
|
Mas o que a multi-tarefa tem a ver com a atualização da tela, se esta está desligada? Seria como deixar a cabeça de uma impressora indo pra lá e pra cá, mesmo sem ter nada pra imprimir.
Ao meu ver é um gasto desnecessário de bateria! Só deveria acontecer atualização de tela quando ela estivesse ligada.
Eu percebi isso e vou alterar minha aplicação para que não atualize a área de notificação se a tela estiver desligada, poupando recursos. Mas e todos os outros programas que tenho instalados e rodando, será que fazem o mesmo? Quanto de bateria eu ganharia se houvesse essa preocupação ou esse cuidado no próprio sistema operacional?
|
Tem um Android? Gosta de tirar fotos? Que tal subi-las automaticamente para a internet? Dê uma olhada: http://autouploader.aguilarj.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2011 12:50:23
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
Boa pergunta, na verdade quando está sem ser exibido os métodos de desenho não deveriam ser chamados (e acho que realmente não são).
Talvez no seu caso voce esteja realmente processando o que precisa na UI Thread.
|
Facebook @MarkyHitchhiker +Mark WP: MarkyTech's
Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais
DefaultTableModel?! PARE! Não faça isso! Faça melhor!
Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
DON'T PANIC!
MarkyHitchhiker's Blog! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2011 13:05:05
|
malconL
JavaTeenager
Membro desde: 15/02/2011 10:44:24
Mensagens: 179
Offline
|
Mas o que a multi-tarefa tem a ver com a atualização da tela, se esta está desligada? Seria como deixar a cabeça de uma impressora indo pra lá e pra cá, mesmo sem ter nada pra imprimir.
Seria? Atualização de tela consome energia, mas CPU?
Quando ao processamento, existe duas formas de pensar:
1) multi-tarefa real, portanto desligar a tela não deveria reduzir em nada o processamento.
2) e o estilo iOS de multi-tarefa onde o app é de fato suspenso e não faz uso do processador (apesar de haver algumas exceções são consideradas).
This message was edited 1 time. Last update was at 09/06/2011 13:06:47
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2011 14:27:31
|
fenrir
JavaEvangelist
Membro desde: 26/09/2002 13:06:19
Mensagens: 328
Localização: São Paulo
Offline
|
Marky.Vasconcelos wrote:Boa pergunta, na verdade quando está sem ser exibido os métodos de desenho não deveriam ser chamados (e acho que realmente não são).
Talvez no seu caso voce esteja realmente processando o que precisa na UI Thread.
Não tá não....tanto que quem está rodando é um serviço (android.app.Service) que tem como única interação com a tela (e com o usuário) a criação de uma notificação para mostrar o andamento do processo, exibida na área de notificação. Fiz o teste e se desabilito a atualização da notificação não ocorre processamento de UI alguma....já se deixo habilitado (apenas a sua atualização, pois criada ela é sempre) tá lá a UI processando (e consumindo).
Eu até concordaria em parte se fosse o caso da tela toda estar sendo alterada, pois assim se o usuário ligasse o aparelho a tela demoraria um pouco menos para ser apresentada, mas como se trata de uma notificação não vejo sentido! Sem contar que antes de exibir a tela é necessário passar pelo desbloqueio dela....tempo mais que suficiente para desenhá-la.
malconL wrote:
Mas o que a multi-tarefa tem a ver com a atualização da tela, se esta está desligada? Seria como deixar a cabeça de uma impressora indo pra lá e pra cá, mesmo sem ter nada pra imprimir.
Seria? Atualização de tela consome energia, mas CPU?
Alguém tem que mandar a tela se atualizar, não? E dizer exatamente com o que!
malconL wrote:Quando ao processamento, existe duas formas de pensar:
1) multi-tarefa real, portanto desligar a tela não deveria reduzir em nada o processamento.
O processamento do programa não deveria ser reduzido, mas o processamento da tela sim (por que processar tela se ela está desligada?).
malconL wrote:2) e o estilo iOS de multi-tarefa onde o app é de fato suspenso e não faz uso do processador (apesar de haver algumas exceções são consideradas).
Essa comparação não é válida para o caso, pois não é uma aplicação que está rodando, mas um serviço (em segundo plano, sem interação com o usuário). Sem contar que no Android é assim também (ao suspender a aplicação, o processamento dela para também).
This message was edited 1 time. Last update was at 09/06/2011 14:28:51
|
Tem um Android? Gosta de tirar fotos? Que tal subi-las automaticamente para a internet? Dê uma olhada: http://autouploader.aguilarj.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2011 14:59:52
|
malconL
JavaTeenager
Membro desde: 15/02/2011 10:44:24
Mensagens: 179
Offline
|
fenrir wrote:
O processamento do programa não deveria ser reduzido, mas o processamento da tela sim (por que processar tela se ela está desligada?).
Quem disse que o processo em questão é responsável por atualizar a tela?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2011 15:39:08
|
fenrir
JavaEvangelist
Membro desde: 26/09/2002 13:06:19
Mensagens: 328
Localização: São Paulo
Offline
|
malconL wrote:
fenrir wrote:O processamento do programa não deveria ser reduzido, mas o processamento da tela sim (por que processar tela se ela está desligada?).
Quem disse que o processo em questão é responsável por atualizar a tela?
Tem razão....não é exatamente o processo responsável pela atualização de tela diretamente, mas por elementos que nela são apresentados, como a barra de notificação.
A tela em si pode não estar sendo atualizada, mas porque um elemento que só faz sentido quando ela está ligada é atualizado e fica consumindo recursos?
Vou tentar achar algo no bugtracker do Android.....
|
Tem um Android? Gosta de tirar fotos? Que tal subi-las automaticamente para a internet? Dê uma olhada: http://autouploader.aguilarj.com |
|
|
 |
|
|