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