2011-10-03 9 views
0

진행률 표시 줄에 UI의 백그라운드 서비스 진행 상황을 지속적으로 게시해야합니다. 그것에 대해 갈 방법에 대한 아이디어. 인 텐트는 작동하지 않을 것입니다. 활동이 시작된 후에 만 ​​데이터를 보낼 수 있다고 생각합니다. 개미 다른 제안?서비스와 활동 간의 데이터 교환

업데이트 : UI의 진행

답변

0

도움말 마우스를 이용해 주셔서 감사합니다.하지만 내 앱에서 진행률 표시 줄을 업데이트해야했기 때문에 내 앱에서 어떤 것이 표시되는지에 따라 브로드 캐스트 인 텐트 및 수신자 및 인 텐트 필터를 통해 구현하는 것이 더 쉬웠습니다. BroadcastReciever의 내부 서브 클래스를 진행이 필요한 활동에 등록 (사용자 정의 인 텐트 필터가 적용됨) 된 브로드 캐스트 인 텐트 (onResume())에 등록하여 서비스의 진행 상황을 브로드 캐스팅하기 만하면됩니다. (동일한 인 텐트 필터를 가짐). 메모리 headspace를 절약하기 위해 액티비티의 onPause() 메소드에서 이러한 recievers를 등록 취소 할 수도 있습니다.

+0

은 이러한 종류의 통신 및 서비스와의 통신에 권장되는 접근 방식입니다. – Ewoks

1

전체 응용 프로그램에 대해 한 번 만든 응용 프로그램을 확장 진행률 표시 줄에 발생합니다.

활동이 시작되면 응용 프로그램 개체의 필드에 대한 참조를 저장하십시오. Activity.getApplication을 사용하여 Application에 액세스 할 수 있습니다. onPause/onResume 호출에서이 필드를 활동 참조 또는 null로 설정합니다.

그러면 Service에서 Service.getApplication을 통해 응용 프로그램에 액세스 할 수 있습니다. 따라서 액티비티 참조가 null이 아니어야합니다. 즉 액티비티가 사용자에게 보여 졌음을 의미하며, 액티비티에 대한 메소드를 호출하여 필요에 따라 UI를 업데이트합니다.

+0

좋아 .. 그 진행 상황에있는 진행 막대에 그 진행 상황을 게시하는 방법은 무엇입니까? setProgress()가 작동합니까? –

+0

나는 Activity.setProgress()를 의미한다 –

+0

확실히 이것은 좋은 선택이다. 제목 진행률 표시 줄을 사용하려면 requestWindowFeature를 호출해야합니다. –

관련 문제