Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- #큐구조 #큐다운로드
- 상태바 가려짐현상 #소프트키 가려짐
- 토글 험수
- Room 데이터베이스 업데이트
- compse state
- 셀룰로오스-g-폴리락타이드 공중합체
- compse collectAsState
- 안드로이드 스튜디오 애뮬레이터
- 안드로이드스튜디오 다운
- 안드로이드 sms
- 구버전 안드로이드 스튜디오
- var 와 val
- 코틀린 트리거 버튼
- viewmodelscope
- 커스텀스피너
- TwomonUSB
- 안드로이드 mvvm
- 비콘스캐닝
- bluetoothmanager
- apk이름변경
- 코루틴 job
- TowmonUSB 연결오류
- 안드로이드스튜디오 jdk
- 라이브데이터 postValue
- 스레드 #코루틴
- 안드로이드 비콘
- 1회용 플라스틱컵
- 모의위치 주입
- 코틀린 이미지저장 #파일저장
- withContext
Archives
- Today
- Total
EnjoyLife
Queue 구조로 다운로드 하기 본문
// 다운로드 대기열을 저장하는 리스트, 두 번째 요소는 Any 타입으로 파라미터로 대체 가능
private val downloadQueue = mutableListOf<Triple<String, Any, Int>>()
var isDownloading = false
fun main() {
// 대기열에 항목 추가
addToDownloadQueue("http://example.com/file1.zip", "day1", 1)
addToDownloadQueue("http://example.com/file2.zip", "day2", 2)
addToDownloadQueue("http://example.com/file3.zip", "day3", 3)
// 특정 pos 값을 가진 항목 제거
removeFromDownloadQueue(2) // Position이 2인 항목을 제거
removeFromDownloadQueue(4) // Position이 4인 항목을 찾을 수 없음
}
// 대기열에 항목을 추가하는 함수
fun addToDownloadQueue(downloadUrl: String, customParam: Any, pos: Int) {
downloadQueue.add(Triple(downloadUrl, customParam, pos))
println("Added to downloadQueue: $downloadQueue")
processDownloadQueue()
}
// 특정 pos 값을 가진 항목을 대기열에서 제거하는 함수
fun removeFromDownloadQueue(pos: Int) {
// 대기열에서 pos 값을 가진 항목을 찾기
val itemToRemove = downloadQueue.find { it.third == pos }
// 항목이 존재하면 제거
if (itemToRemove != null) {
downloadQueue.remove(itemToRemove)
println("Removed item with Position: $pos from downloadQueue")
} else {
println("Item with Position: $pos not found in downloadQueue")
}
println("Current downloadQueue: $downloadQueue")
}
// 대기열을 동기적으로 처리하는 함수
fun processDownloadQueue() {
if (isDownloading || downloadQueue.isEmpty()) return
val (downloadUrl, customParam, pos) = downloadQueue.first()
isDownloading = true
println("Downloading from URL: $downloadUrl, Custom Param: $customParam, Position: $pos")
simulateDownload()
isDownloading = false
downloadQueue.removeAt(0)
processDownloadQueue()
}
// 동기적 다운로드 시뮬레이션 함수
fun simulateDownload() {
Thread.sleep(2000)
}'안드로이드 개발 > 개발팁' 카테고리의 다른 글
| mvvm 기반의 앱 폴더 구조 (0) | 2025.03.20 |
|---|---|
| Room 프로세스 (0) | 2024.12.10 |
| var 와 MutableList 사용이 헷갈릴 경우 (3) | 2024.09.28 |
| 계속 잊어버리는 onActivityResult 사용법 (0) | 2024.07.10 |
| 헷갈리는 토글 코드 (0) | 2024.06.30 |