• Nenhum resultado encontrado

3.4.1

Passagem de Variáveis de Ambiente

A aplicação carregada pelo gerenciador D-Bus herda as variáveis de ambiente que foram definidas no momento em que o barramento de sessão D-Bus foi iniciado. D-Bus não provê um outro mecanismo para modificar as variáveis de ambiente passadas para as aplicações quando são ativadas. Se a aplicação for carregada pelo Navegador de Tarefas, pode-se im- plementar uma função para que ela herde qualquer variável de ambiente. Porém, quando o Navegador de Tarefas utiliza o D-Bus para carregar a aplicação, a situação volta para o cenário anterior: a execução é feita pelo gerenciador D-Bus.

A aplicação carregada pelo maemo-launcher herda todas as variáveis de ambiente que foram definidas no momento em que o maemo-launcher foi inicializado. Para que as apli- cações apresentem o tema de interface gráfica correto, o maemo-launcher fica obervando constatemente as mudanças de interface. Uma variável de ambiente não pode ser utilizada para mudanças dinâmicas de configuração, já que é necessário que o aplicativo seja reini- cializado para que o novo valor da variável seja definido.

Mudanças de localidade e língua são comunicados através de variáveis de ambiente. Como as aplicações e suas bibliotecas também armazenam o estado da localidade, a modi- ficação das preferências (através de GConf, por exemplo), não ajudaria. Além disso, a mu- dança da localidade e da língua do dispositivo requer a reinicialização de todas as aplicações e processos envolvidos na invocação da aplicação.

3.5

Finalização do Aplicativo

Uma aplicação é encerrada quando ela é fechada pelo usuário através de botões na interface gráfica, ou quando o sistema solicita tal tarefa. O sistema vai requisitar e forçar que as aplicações sejam finalizadas quando, por exemplo:

• A bateria do dispositivo tenha chegado ao final; • O usuário desliga o dispositivo;

• O usuário modifica o idioma do dispositivo;

3.5 Finalização do Aplicativo 33

• O usuário tenta fechar ou mudar para uma aplicação que não responde e o usuário aceita que o sistema finalize a aplicação.

Caso o sistema esteja com pouca memória disponível, o sistema pode requisitar que as aplicações sejam encerradas em background. Este método será discutido mais adiante. Se não há memória suficiente para que o sistema inicialize a aplicação solicitada, a aplicação vai requisitar mais memória e o núcleo vai encerrá-la devido à falta do recurso.

3.5.1

Armazenamento do Estado e Encerramento em Background

O armazenamento do estado da aplicação é necessário para que o estado da interface gráfica do aplicativo e outros dados do usuário possam ser recuperados, caso a aplicação encerre de maneira anormal ou se seja encerrada em background. As aplicações devem salvar o seu estado constantemente ao serem deixadas em background.

3.5.2

Encerramento em Background

A plataforma maemo possui um mecanismo para encerrar em background aplicações com interface gráfica. Tal procedimento visa economizar memória para que outras aplicações também possam ser executadas. Este processo é chamado de encerramento em background (background killing).

O encerramento em background é implementado pelo Navegador de Tarefas, para encer- rar uma aplicação de maneira transparente sem que o usuário perceba e para reinicializá-la quando o usuário necessitar da mesma. Isto é possível, pois as aplicações salvam os estados da interface gráfica periodicamente e o Navegador de Tarefas também sabe quais são as apli- cações gráficas em execução. As aplicações salvam o estado da interface gráfica sempre que forem para background, ou seja, quando estão atrás de uma janela de outra aplicação.

Contudo, nem sempre é possível salvar o estado da interface gráfica do usuário (por exemplo, quando há um download em progresso). Somente as aplicações que salvaram o estado de sua interface gráfica podem ser encerradas. Quando o sistema notificar que há pouca memória disponível, o Navegador de Tarefas encerrará todas as aplicações que estão aptas. Quando a aplicação for inicializada novamente, será necessário que toda a interface gráfica seja refeita de acordo com o estado que foi salvo anteriormente. O Navegador de

3.5 Finalização do Aplicativo 34

Tarefas não tentará reiniciar a aplicação se não houver memória suficiente no sistema para tal. Há alguns problemas relativos ao encerramento em background na plataforma maemo:

• Suponha que a aplicação que foi encerrada se encontra logo depois de uma aplicação que está na área ativa do desktop. Caso esta última seja finalizada pelo usuário, a apli- cação que está logo depois não será visível para o usuário até que tenha sido reiniciada e voltado ao seu estado anterior;

• O Navegador de Tarefas verifica se a nova aplicação pode ser inicializada compa- rando a quantidade de memória livre disponível no sistema com o valor configurado em tempo de compilação. Tal valor pode ser menor do que uma certa aplicação pode precisar ou, em alguns casos, mais do que o necessário. A quantidade mínima especi- ficada de memória livre desejável é um valor opcional.

3.5.3

Armazenamento do Estado da Interface Gráfica

A biblioteca LibOSSO é a responsável por armazenar o estado da aplicação gráfica do usuário. O LibOSSO salva estes dados em um descritor para cada aplicação. O LibOSSO também assegura que o arquivo de estado não será modificado até que a escrita do arquivo tenha sido completada e o arquivo seja fechado. A aplicação usa a API padrão POSIX que realiza as operações de leitura e escrita nos arquivos.

Se o dispositivo for reiniciado, os estados da interface gráfica das aplicações são descar- tados. Dessa forma, as aplicações são iniciadas a partir do estado padrão. Cada aplicação com um número de versão diferente (por exemplo, é possível a existência, no mesmo sis- tema, de duas versões distintas da mesma ferramenta) terá seu próprio arquivo de estado da interface gráfica.

3.5.4

Armazenamento dos Dados do Usuário

Algumas aplicações devem salvar constantemente os dados do usuário quando estão na área ativa do desktop, para que não haja grandes perdas caso ocorra alguma falha, por exemplo, problemas na bateria. As aplicações devem registrar uma função de chamada LibOSSO para realizar o armazenamento das informações e notificar ao LibOSSO quando os dados do

Documentos relacionados