2011-11-29 3 views
0

내 응용 프로그램에서 수행하고 싶은 한 가지 사항에 대해 약간의 조언을드립니다. 내 응용 프로그램이 시작될 때마다 인터넷을 통해 데이터를 동기화 할 때마다 원 모양의 진행률 막대가 들어있는 사용자 지정 작업 표시 줄이 있으며 데이터를 다운로드 할 때 해당 진행률 표시 줄을 실행하고 실행을 중지해야한다고 생각합니다. 다운로드가 끝났습니다. 그리고 나는이 작업을 내 탭 호스트의 모든 작업에서 수행하려고합니다 (응용 프로그램에 2 개가 있으며 기본 응용 프로그램에서이 작업을 수행하려고합니다). 나는 이미 threadasync task으로 시도했지만, 활동을 변경하고 진행 막대를 되돌릴 경우 스레드와 동일하게 회전하지 않습니다. 나는 뭔가를 놓친가요? 아니면 서비스도 시도해야합니다.Android 서비스/비동기 작업/스레드

또는이를 수행하는 가장 좋은 방법은 무엇입니까?

+0

코드를 입력 하시겠습니까? – ingsaurabh

+0

코드를 많이 사용하기 때문에이 작업을 수행하는 가장 좋은 방법과 사용할 대상을 알고 싶습니다. 내가 사용하고 있던 코드는 정상적으로 작동하지만 문제는 asynctask의 라이프 사이클이 액티비티의 라이프 사이클에 달려 있다는 것을 아는 것입니다. 쓰레드도 비슷합니다. 스레드가 실행 중일 때 얻을 수있는 방법을 제공하고 완료되면 시간을내어 끝내면 몇 가지 일을 할 수 있습니다. 기꺼이 하겠지만 그 질문에 대한 아이디어는 가장 좋은 제안을 얻는 것입니다 이것을하는 방법. –

+1

'AsyncTask'와 함께이 작업을 수행 할 수 있어야합니다 – Caner

답변

1

당신은 활동주기를 돌봐야합니다. 당신이 모든 활동에 대해 동일한 데이터를 다운로드한다고 가정하면 (게임에서 최고 기록 갱신과 같이) 가장 좋은 방법은 별도의 스레드를 생성하는 것이지만 단 한 번만 (나는 싱글 톤 객체를 사용하여 이 때문에 두 번 다운로드를 시작하지 않을 것입니다.) 다운로드가 준비되면 활동을 통해 활동을 알 수 있고 UI를 올바르게 업데이트 할 수 있습니다.

그래서 워크 플로우

은 다음과 같이이다 :
  • 이 singletoin 예를 그런 다운로드를 보여주는
  • 갱신 인터페이스 프로세스 에 필요가 활성화되지 않은 경우
  • 시작 다운로드를/얻을

    • 이력서 활동. ..
    • 수신 노 취류 방송 및 업데이트 UI

    브로드 캐스트 리시버에도이 코드를 재사용 할 수 있으므로 최고 기록을 정기적으로 업데이트하도록 예약 할 수 있습니다 (게임이 현재 활성화되지 않은 경우에도 사용 가능)