| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- var 와 val
- TwomonUSB
- 안드로이드스튜디오 jdk
- 상태바 가려짐현상 #소프트키 가려짐
- withContext
- 코틀린 이미지저장 #파일저장
- compse state
- 안드로이드 mvvm
- 토글 험수
- 구버전 안드로이드 스튜디오
- 코루틴 job
- bluetoothmanager
- TowmonUSB 연결오류
- #큐구조 #큐다운로드
- 안드로이드 스튜디오 애뮬레이터
- 1회용 플라스틱컵
- 비콘스캐닝
- 안드로이드스튜디오 다운
- 모의위치 주입
- 안드로이드 sms
- apk이름변경
- 안드로이드 비콘
- 스레드 #코루틴
- viewmodelscope
- compse collectAsState
- 셀룰로오스-g-폴리락타이드 공중합체
- 커스텀스피너
- Room 데이터베이스 업데이트
- 코틀린 트리거 버튼
- 라이브데이터 postValue
- Today
- Total
목록전체 글 (57)
EnjoyLife
안드로이드앱에서 주로 사용하는 네트워크 통신,db 기능을 기반으로 공통적으로 제가 사용하는 패턴입니다. app/├── data/│ ├── local/ │ │ ├── SampleEntity.kt // Room 엔티티│ │ ├── SampleDao.kt // Room DAO│ │ └── AppDatabase.kt // Room Database (싱글톤)│ └── remote/│ ├── ApiService.kt // Retrofit API 인터페이스 (독립적 구현)│ └── SampleData.kt // 네트워크 데이터 모델├── repository/│ └── SampleRepos..
출처:https://developer.android.com/training/data-storage/room?hl=ko 앱 안에서 데이터를 저장하고 사용하는 과정을 학교 도서관으로 비유하겠습니다.Room Database: 도서관(책을 저장하는 큰 장소)Entities: 책 한 권(내용을 저장하는 틀,ex 붕어빵 틀)DAO: 사서 선생님(책을 빌려주고, 다시 넣어주는 역할)Rest of The App: 학생(책을 읽고 싶어서 도서관을 이용하는 사람)앱이 도서관처럼 데이터를 정리하고 꺼내 쓰도록 돕는 것이 Room 입니다. 프로세스 학생(사용자): 책 정보를 입력하거나 요청해."책 제목은 '코틀린 배우기', 저자는 '홍길동', 출판 날짜는 '2024-12-10'이야. 이 책을 저장해 줘!"또는 "내가 저장한 ..
// 다운로드 대기열을 저장하는 리스트, 두 번째 요소는 Any 타입으로 파라미터로 대체 가능private val downloadQueue = mutableListOf>()var isDownloading = falsefun 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 값을 가진 항목 제거 removeFromDownloadQu..
우선 결론부터 말하면, 코틀린의 변수는 기본형(Primitive Type) 과 참조형(Reference Type,객체)있다.기본형앞에 val 을 하면 당신이 알고 있는대로 값을 넣으면, 두번다시 변경할수 없다.하지만 아래와 같은 참조형앞에 val을 하면 참조(주소값)변경이 불가능할뿐 객체내부의 값은 변경이 가능하다(ex 리스트에 값 추가,삭제) val + 기본형(예: Int, String)→ 값 자체를 변경 불가val + 참조형(예: MutableList, 객체 등)→ 참조(주소) 변경은 불가,→ 객체 내부 데이터는 변경 가능 둘다 val 타입이지만 각각 mutableList,list 타입인 변수val displayList1: MutableList = mutableListOf("Apple", "Ban..
chatGpt 가 설명한거여서, 여러분이 읽기에 멘트가 거북하거나 느끼할수 있다는점 감안하여 주시기 바랍니다. 설명은 아주 완벽합니다. 참고로. 그래프의 "Application Code" 은 안드로이드 앱을 의미합니다. MediaPlayer 달리앱안에 Exoplayer 가 종속되어 있습니다이 다이어그램을 쉽게 설명하자면, ExoPlayer가 어떻게 음원이나 비디오를 재생하는지 단계별로 나눠서 보여주는 거야. 각 부분이 어떤 역할을 하는지 간단하게 알아볼게.1. Application Code (앱 코드)너는 앱을 개발하면서 ExoPlayer에게 "음악 재생해!", "잠깐 멈춰!", "저기로 이동해!" 같은 명령을 내릴 거야. 그 명령들은 prepare(), seekTo(), play(), pause() ..
class MainActivity : AppCompatActivity() { companion object { const val REQUEST_CODE = 1 } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val button = findViewById(R.id.button) button.setOnClickListener { val intent = Intent(this, SecondActivity::class.java) ..
val isOpen = MutableLiveData(false) fun toggleVisibility() { isOpen.value = !(isOpen.value ?: false) } 위 코드와 아래코드는 동일하다. 위의 코드가 간결하기에 위의 코드를 항상 사용하는데, 항상 헷갈린다.그래서 여기에 기록한다 ㅜㅜ val isOpen = MutableLiveData(false)fun toggleVisibility() { if (isOpen.value == true) { isOpen.value = false } else { isOpen.value = true }}
@Preview(showBackground = true)@OptIn(ExperimentalMaterial3Api::class)@Composablefun Test() { val viewModel: MainViewModel = viewModel() val inputTxt by viewModel.inputTxt.collectAsState() val outTxt by viewModel.outTxt.collectAsState()// var inputTxt by remember {// mutableStateOf("")// } Log.e("Test", "inputTxt: $inputTxt") //var outTxt by remember { mutableStateOf(..