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.
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.
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:
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!