Como usar a intenção de atualizar uma atividade?
-
19-09-2019 - |
Pergunta
Eu tenho um serviço que está baixando um arquivo. Quando o download for feito, eu gostaria de atualizar minha lista de "arquivos baixados" Na minha Activity
, mas apenas se o Activity
está em execução. Eu não quero o Activity
para começar, se ainda não estiver em execução.
Eu estava esperando que eu poderia fazer isso através de um novo Intent
com alguma bandeira especial.
Alguém tem alguma idéia de como posso conseguir isso? Um pequeno exemplo de código, talvez?
Solução
Você pode criar nova instância BroadcastReceiver e fazer algo ao longo destas linhas sobre onResume do seu Activity () método:
registerReceiver(myReceiver, new IntentFilter(DownloadService.ACTION_FILE_DOWNLOADED));
Depois disso, substituir OnReceive de myReceiver () para chamar uma função que atualiza o componente que deseja:
@Override
public void onReceive(Context context, Intent intent) {
...
updateViewWithData(service.getNewFileData());
...
}
No método onPause () da sua atividade, apenas unregister o receptor:
unregisterReceiver(myReceiver);
Espero que isso iria ajudá-lo, não hesite em perguntar se há algo claro.
Outras dicas
A boa maneira de fazer isso é ligar sua atividade "Os ficheiros transferidos" para o serviço. Quando você ligar o serviço, na função onServiceConnected, registrar um callback Binder. Então, sempre que você tem disponível novos dados, o serviço só chama que callback. Se a atividade não está em execução, a lista de chamada de retorno no lado do serviço estará vazia, por isso não vai informar sua atividade.
Para um exemplo desta abordagem, dê uma olhada RemoteService.java no SDK Android:
Samples \ ApiDemos \ src \ com \ exemplo \ android \ apis \ app \