문제

파일을 다운로드하는 서비스가 있습니다. 다운로드가 완료되면 내 "다운로드 파일"목록을 업데이트하고 싶습니다. 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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top