나는 ë‹µì„ ì°¾ì•˜ë‹¤! IntentServiceì˜ ë¬¸ì œëŠ” 너무 빨리 다운로드 Manager.engueue()를 ì‹¤í–‰í•˜ê³ ê²°ê³¼ì 으로 ëª¨ë“ ë‹¤ìš´ë¡œë“œê°€ 함께 ë‹¤ìš´ë¡œë“œì–»ì„ ê²ƒìž…ë‹ˆë‹¤. 그래서 백그ë¼ìš´ë“œ ìŠ¤ë ˆë“œì—서 wait()를 호출하여 다운로드가 완료 ë 때까지 ìš”ì²ì´ ì‹¤í–‰ì´ ì™„ë£Œë˜ì§€ 않았는지 확ì¸í–ˆìŠµë‹ˆë‹¤. ë° í˜¸ì¶œ notify() 때 방송 onReceive 호출 하 ê³ ë‚´ 다운로드가 완료! Androidì—서 다운로드 ëŒ€ê¸°ì—´ì„ êµ¬í˜„í•˜ëŠ” 가장 ì¢‹ì€ ë°©ë²•ì€ ë¬´ì—‡ìž…ë‹ˆê¹Œ? 세 번째 ì˜µì…˜ì€ ì´ì „ì— ì‹œìž‘ëœ ë‹¤ìš´ë¡œë“œê°€ 완료ë˜ë©´ ìš”ì²ì„ ë°›ê³ DownloadManager.enqueue()를 호출하는 LocalService를 사용하는 것ì´ì§€ë§Œ 어떻게해야합니까? ë‚´ 서비스는 실행 ì¤‘ì¸ ê²½ìš°ì—ë„ ìš”ì²ì„ 통해 ë‚´ 활ë™ì„ 형성해야합니다! (그래서 난 그냥 ì˜ë„ì— ë°ì´í„°ë¥¼ ë„£ì„ ìˆ˜ 없습니다). í†µì‹ ì„ í™œì„±í™”í•˜ë ¤ë©´ ë°”ì¸ë”© ëœ ì„œë¹„ìŠ¤ë¥¼ 만들어야하며 ë¬¸ì„œì— ë”°ë¥´ë©´ ë°”ì¸ë”© í• ê²ƒì´ ì—†ì„ ë•Œ 파괴ë©ë‹ˆë‹¤! ì˜ë„ 서비스를 사용합니다. í와 백그ë¼ìš´ë“œ ìŠ¤ë ˆë“œë¥¼ ì œê³µí•˜ë¯€ë¡œ 다운로드 논리를 onHandleIntent()ì— ë„£ê¸°ë§Œ 하면 ë©ë‹ˆë‹¤. ì´ë¥¼ ë³´ì—¬ 주는 샘플 프로ì 트는 여기를 참조하ì‹ì‹œì˜¤. 다운로드 ì‹œê°„ì€ ì—°ê²° ì†ë„와 프로그램 í¬ê¸°ì— ë”°ë¼ ë‹¤ë¦…ë‹ˆë‹¤. 매우 대략ì ì¸ ê°€ì´ë“œë¡œì„œ 30ë¶„ 짜리 í”„ë¡œê·¸ëž¨ì„ ë‹¤ìš´ë¡œë“œí•˜ëŠ” ë° 10-15ë¶„ ì´ìƒ 걸리지 않아야 합니다. íì— ìžˆëŠ” 여러 파ì¼ì„ 하나씩 ë‹¤ìš´ë¡œë“œí•˜ë ¤ë©´ 어떻게 해야 합니까? ì´í›„ 샘플 코드로 ì‚¬ìš©í•˜ê³ ìžˆìŠµë‹ˆë‹¤.
로컬 DBì—서 문ìžì—´ë¡œ ë‹¤ìš´ë¡œë“œí• URLì„ ë™ì 으로 ì „ë‹¬í•©ë‹ˆë‹¤. 난 그냥 파ì¼ì„ 다운로드하는 ê²ƒì€ í입니다! ë˜í•œ 다운로드 í• ê²ƒì´ ì—†ì„ ë•Œ 서비스가 무기한 실행ë˜ëŠ” ê²ƒì„ ì›í•˜ì§€ 않습니다. ë”°ë¼ì„œ 활ë™ì´ 종료ë 때 ëŒ€ê¸°ì—´ì— ìžˆëŠ” 다운로드가 ì†ì‹¤ë©ë‹ˆë‹¤. ë‚´ê°€ ë§žì§€? BBC iPlayer ì•±ì˜ í”„ë¡œê·¸ëž¨ì—서 다운로드를 íƒí•˜ë©´ ì•±ì´ ì—´ë ¤ 있는지 ì—¬ë¶€ì— ê´€ê³„ì—†ì´ ê¸°ê¸°ê°€ ì¸í„°ë„·ì— ì—°ê²°ë˜ëŠ” 즉시 ìžë™ìœ¼ë¡œ 다운로드ë©ë‹ˆë‹¤. í”„ë¡œê·¸ëž¨ì€ ì¶”ê°€ëœ ìˆœì„œëŒ€ë¡œ 한 ë²ˆì— í•˜ë‚˜ì”© 다운로드ë©ë‹ˆë‹¤. iOSì—서 ë‹¤ìš´ë¡œë“œëœ ì£¼ë¬¸ í”„ë¡œê·¸ëž¨ì„ ë³€ê²½í•˜ë ¤ë©´ `편집` ì˜µì…˜ì„ ì„ íƒí•˜ê³ í”„ë¡œê·¸ëž¨ì„ ì›í•˜ëŠ” 순서로 드래그하여 대기열ì—서 다운로드를 다시 ì •ë ¬í• ìˆ˜ 있습니다. 변경 ë‚´ìš©ì„ ì €ìž¥í•˜ë ¤ë©´ `완료`를 누르기만 하면 ë©ë‹ˆë‹¤. 3) 다운로드를 ë°›ì•˜ì„ ë•Œ ë°ì´í„°ë² ì´ìФì—서 í–‰ì„ ì½ê³ 새 다운로드를 시작합니다(enqueue).
그래서 난 그냥 ì›ë³¸ì„ 다시 ì„¤ì¹˜í•˜ê³ ì‹¬ì¦ˆ 4 (다시)를 다운로드하는 ê³¼ì •ì—있습니다. 다운로드를 í´ë¦í•˜ê³ ì´ìš© 약관 ë“±ì„ ì‚´íŽ´ë³´ê³ ë‹¤ìš´ë¡œë“œë¥¼ í´ë¦í•©ë‹ˆë‹¤. 하지만 ê·¸ê²ƒì€ ë‹¨ì§€ “대기열ì—서 다운로드”ë¼ê³ í•˜ê³ ì–´ë–¤ ì§„ì „ì„ í•˜ê±°ë‚˜ 심지어 다운로드가 ì¼ì–´ë‚˜ê³ 있ìŒì„ 표시하지 않습니다. 나는 ì·¨ì†Œí•˜ê³ ë‹¤ì‹œ 시ë„했지만 ê·¸ë ‡ê²Œ ìž‘ë™í•˜ì§€ 않습니다 그래서 나는 ì›ì‚°ì§€ ìºì‹œ ë˜ëŠ” 시작 디스í¬ë¥¼ 지우기ì—서 ìƒê°í• 수있는 다른 ëª¨ë“ ì¼ì„, 다른 곳과 무엇ì„하지, 나는 ë‚´ 노트ë¶ì„ í•´ì œí•˜ê³ ì¸í„°ë„·ì˜¤í”„ì—. 하지만. 아무것ë„. 를) 입니다. 작업!!! 난 ì •ë§ ë„ì›€ì´ í•„ìš”í•©ë‹ˆë‹¤. ê·¸ê²ƒì€ ìž‘ë™í•˜ì§€ 않습니다. ë‚´ê°€ ìž˜ëª»í•˜ê³ ìžˆëŠ” ë”가가 있습니까?? 나는 ëª¨ë“ ê²ƒì„ ì²˜ë¦¬í•˜ê¸° ë•Œë¬¸ì— ì•ˆë“œë¡œì´ë“œì™€ ê·¸ 위대한 ë‚´ 파ì¼ì„ 다운로드DownloadManager를 ì‚¬ìš©í•˜ê³ ìžˆì–´ìš” (ì—°ê²°ì´ ì†ì‹¤, ìž¬ì‹œë„ ë“±) ë¬¸ì œëŠ” ë‚´ 파ì¼ì„ íì— ì°¨ë¡€ë¡œ ë‹¤ìš´ë¡œë“œí•˜ê³ DownloadManagerê°€ì´ ê¸°ëŠ¥ì„ ì œê³µí•˜ì§€ 않는다는 것입니다. ë”°ë¼ì„œ DownloadManager.enqueue(…)를 여러 번 호출하면 ëª¨ë“ íŒŒì¼ì´ ë™ì‹œì— 다운로드ë©ë‹ˆë‹¤. ì´ ë¬¸ì œë¥¼ 어떻게 í•´ê²°í• ìˆ˜ 있습니까? 여기서 3ì€ ë™ì‹œì— ì‹¤í–‰í•˜ë ¤ëŠ” 다운로드 수입니다.
ì´ë¯¸ 3ê°œì˜ ë‹¤ìš´ë¡œë“œê°€ 실행 ì¤‘ì¸ ê²½ìš° ìž‘ì—…ì„ íì— ëŒ€ê¸°í•˜ê³ ë‚˜ì¤‘ì— ìž‘ì—…ì„ ìžë™ìœ¼ë¡œ 처리합니다. 와 함께 비ë™ê¸° ìž‘ì—…ì„ ì‹¤í–‰: ë˜í•œ IntentService 여기 ìž‘ë™ í•˜ì§€ 않습니다! ìš”ì²ì„ 하나씩 처리하ë”ë¼ë„ DownloadManager.enqueue() í˜¸ì¶œì´ ë„ˆë¬´ 빨리 실행ë˜ê³ ë‹¤ìŒ í˜¸ì¶œì´ ì‹¤í–‰ë˜ê³ 결과가 다시 ë™ì‹œ 다운로드ë©ë‹ˆë‹¤! ê·¸ë ‡ê²Œí•˜ëŠ” ë°©ë²•ì„ ì•Œë ¤ì£¼ì‹ì‹œì˜¤. ì‘ìš© í”„ë¡œê·¸ëž¨ì´ ì‹œìž‘ë˜ëŠ” 즉시 다운로드가 시작ë˜ê¸°ë¥¼ ì›í•©ë‹ˆë‹¤. ì¹œì ˆí•˜ê²Œ 나를 ë„와주세요! 안드로ì´ë“œ 개발 ìœ í˜• : 다운로드 ëŒ€ê¸°ì—´ì˜ ì´ˆë³´ìž ëª©ì : ì¸ì•± ì²êµ¬ê°€ 성공한 후 서버ì—서 여러 파ì¼ì„ ë‹¤ìš´ë¡œë“œí•˜ë ¤ë©´! 활ë™ì´ ì–¸ì œë“ ì§€ 파괴 ë 수 있기 ë•Œë¬¸ì— ë‚´ 활ë™ì— í를 ë§Œë“¤ê³ DownloadMangerì— ë‹¤ìš´ë¡œë“œë¥¼ 하나씩 보낼 수는 없습니다! 한 ë²ˆì— í•˜ë‚˜ì”© 비ë™ê¸°ì 으로 ì²˜ë¦¬í• ìš”ì²ì„ 대기하는 ì¢‹ì€ ë°©ë²•ì€ IntentService를 사용합니다.