활동을 업데이트하는 방법을 사용하는 방법은 무엇입니까?
-
19-09-2019 - |
문제
파일을 다운로드하는 서비스가 있습니다. 다운로드가 완료되면 내 "다운로드 파일"목록을 업데이트하고 싶습니다. Activity
, 그러나 만약 Activity
실행 중입니다. 나는 원하지 않는다 Activity
아직 실행되지 않은 경우 시작합니다.
나는 새로운 것을 만들어서 이것을 할 수 있기를 바랐다 Intent
특별한 깃발로.
누구든지 내가 어떻게 이것을 달성 할 수 있는지 아는 사람이 있습니까? 작은 코드 예일일까요?
해결책
새로운 BroadCastreceiver 인스턴스를 생성하고 활동의 OnResume () 메소드에서 이러한 라인을 따라 무언가를 수행 할 수 있습니다.
registerReceiver(myReceiver, new IntentFilter(DownloadService.ACTION_FILE_DOWNLOADED));
그런 다음 MyReceiver의 onreceive () 메소드를 무시하여 원하는 구성 요소를 업데이트하는 함수를 호출하십시오.
@Override
public void onReceive(Context context, Intent intent) {
...
updateViewWithData(service.getNewFileData());
...
}
활동의 onpause () 메소드에서 수신기를 등록 해제하십시오.
unregisterReceiver(myReceiver);
이것이 당신에게 도움이되기를 바랍니다. 불분명 한 것이 있는지 물어보십시오.
다른 팁
이를 수행하는 좋은 방법은 "다운로드 된 파일"활동을 서비스에 바인딩하는 것입니다. 서비스를 바인딩 할 때 onserviceConnected 함수에서 바인더 콜백을 등록하십시오. 그런 다음 새로운 데이터를 사용할 수있을 때마다 서비스는 해당 콜백 만 호출합니다. 활동이 실행되지 않으면 서비스 측의 콜백 목록이 비어 있으므로 활동에 알리지 않습니다.
이 접근법의 예는 Android SDK의 Remoteservice.java를 살펴보십시오.
샘플 apidemos src com example android apis app