2011-03-20 5 views
1

내 응용 프로그램은 파일 (5-12MB 조각)을 다운로드하고 외부 저장소에서 액세스합니다. Wi-Fi를 사용하지 않을 때 다운로드에 1 ~ 2 분이 소요되기 때문에 사용자가 원하는 곳에 Activity에 도착하기 전에 다운로드를 시작하여 기다릴 필요가 없습니다. .활동 사이에 asynctask 공유

AsyncTask가 가장 좋은 방법 인 것처럼 보였지만, 다음 활동 (내 이해)이 AsyncTask 자체의 진행 상태를 확인할 수 없다는 것을 깨달았습니다. 그들이 할 수있는 최선의 작업은 계속 확인하는 것입니다. 파일을 읽을 수 있는지 확인하십시오 ...하지만 작업이 계속 실행 중이거나 네트워크 연결이 끊어져서 다시 시도해야하는 경우 어떻게해야합니까?

비동기식으로 AsyncTask를 다시 작성하고 곧 완료 될 경우 파일을 다시 다운로드하는 것은 낭비처럼 보입니다.

향후 활동에서 AsyncTask (특히 상태)에 액세스 할 수있는 방법이 있습니까? 아니면 내가보아야 할 더 나은 패러다임이 있습니까?

답변

1

필요한 것을 백그라운드에서 다운로드 할 수있는 서비스를 만들 수 있습니다. 끝나면 인 텐트를 통해 앱이 콘텐츠 준비가되었음을 알리고 stopSelf()를 통해 서비스를 중지 할 수 있습니다. 따라서 귀하의 다운로드는 항상 홈 화면에서도 계속됩니다. 그래서 사용자에게 알리고 취소 할 수있는 알림을 작성하십시오. :)

편집 : 물론 서비스 내에서 작업을 사용할 수 있습니다. 서비스는 자체 스레드를 생성하지 않으므로 어쨌든 좋은 아이디어 일 것입니다.

+1

'서비스'의 백그라운드 스레드에 대해서는 'IntentService'를 고려하십시오. – CommonsWare

+0

IntentService가 보이지만 서비스 상태를 확인할 방법이 없습니다. 알림을 보낼 수는 있지만 UI 스레드가 계속 실행 중인지 확인하려면 어떻게해야합니까? – Turnsole

2

Developing Android REST client applications과 같은 용도로 앱을 디자인하는 방법에 대한 멋진 설명이 있습니다.

+0

링크가 끊어졌습니다. – powder366

+0

@ powder366 링크가 수정되었습니다. 지적 해 주셔서 감사합니다. –

관련 문제