fbpx

Remover Aplicação da Tela de Recentes no Android com Delphi 10 Seattle

Lista de Tarefas Recentes no Android

As aplicações após encerradas no Android são listadas  na Tela de Visão Geral ou Lista de Tarefas Recentes, veja como remover sua aplicação de lá com Delphi.

O usuário pode navegar pela lista e selecionar uma aplicação a retomar ou remover uma aplicação da lista deslizando-a para fora.

Recents Screen

Basicamente a lista de tarefas recentes, Recents Screen,  é  uma interface de usuário de nível de sistema que lista atividades e tarefas acessadas recentemente no dispositivo Android.

Lista de Tarefas Recentes no Android

Fonte: http://developer.android.com/intl/pt-br/guide/components/recents.html

Aplicação Delphi Android

A nível didático criaremos no Delphi 10 Seattle uma aplicação Delphi Multi Device apenas com um e  codificaremos essa aplicação apenas com as linhas de código abaixo:

implementation

{$R *.fmx}
uses FMX.Platform.Android;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MainActivity.finish;
end;

end.

Salve o projeto e de um Build para que sejam gerados todos os arquivos necessários dentro do diretório que você selecionou para salvar o projeto, no meu caso chamei de Recents_Screen_DX.

Diretório do Projeto

Alterando o AndroidManifest.template.xml

Para conseguirmos que nossa aplicação entenda que quando solicitamos para encerrar ela também saia da lista de tarefas recentes é necessária a inclusão de um atributo na Activity no arquivo de manifesto gerada para ela, no Delphi isso se dá através do arquivo AndroidManifest.template.xml, como segue:

AndroidManifestTemplate.xml

Note pela imagem que foi inserida na tag Activity a linha:

android:excludeFromRecents=”true”

Após alterado, salve o Arquivo (CRTL + S).

<!-- Our activity is a subclass of the built-in NativeActivity framework class.
     This will take care of integrating with our NDK code. -->
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
        android:label="%activityLabel%"
        android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
        android:launchMode="singleTask"
        android:excludeFromRecents="true">
    <!-- Tell NativeActivity the name of our .so -->
    <meta-data android:name="android.app.lib_name"
        android:value="%libNameValue%" />
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Vale mencionar que o arquivo template é responsável pela geração do arquivo AndroidManifest.xml que acompanha sua aplicação quando o deploy é efetuado. Este arquivo, a grosso modo, armazena características, permissões entre outras coisas para que o sistema operacional reconheça recursos da sua aplicação.

Distribuindo e Executando a aplicação

Execute a aplicação e veja o resultado, no meu caso gravei um vídeo para mostrar que a aplicação apresentou comportamento diferente de acordo com a versão do Android no dispositivo, confira:

https://www.youtube.com/watch?v=eImBqwiGbPc&sub_confirmation=1

Conclusão: Funcionou com Android 4.4.2 e apresentou incompatibilidade com Android 5.0

Como visto no vídeo, em um Motorola Moto G Geraração 2 atualizado para Android 5.0.2, a aplicação mesmo contendo tudo o que é necessário permanece sendo exibida na lista de tarefas recentes (Recents Screen).

Entretanto, em um Samsung Galaxy Tab 3, atualizado com Android 4.4.2 a aplicação realmente ao ser encerrada deixa de fazer parte da lista de tarefas recentes do dispositivo.

Enfim, a simples alteração no arquivo manifesto já por si só é capaz de produzir este resultado, então tente aí com seu dispositivo e comente aqui o resultado da aplicação rodando nele.

Aguardo seu feedback e até a próxima!

 

,

Comente