목록안드로이드 (31)
막무가내 삽질 블로그
Context에 가 뭔지에 대해 다시 한번 공부하면서 정리해 봤다. 정리한 내용은 Context ContextWrapper ContextImpl 메서드 Context와 하위클래스 사용가능한 Context www.notion.so/fundevjay/Context-217aa4528b704e799ea2d936a2fbe800 Context Context www.notion.so
Firebase Crashlytics는 실시간 오류 보고 도구로 앱 품질을 저하하는 안정성 문제를 추적하고 문제를 해결하는 데 도움이 된다. 앱이 Firebase Console에 추가되어 있다는 가정하에 글을 작성 project build.gradle dependencies 안에 classpath 'com.google.firebase:firebase-crashlytics-gradle:2.2.0' 추가해 준다. app build.gralde apply plugin: 'com.google.firebase.crashlytics' 추가 dependencies implementation 'com.google.firebase:firebase-crashlytics:17.1.0' sysnc now 이 상태에서 메인화면..
안드로이드에서 공통된 전역변수를 사용시 Application을 사용할 수 있다. class MyApplication : Application() { private lateinit var networkManager: NetWorkManager private lateinit var api: NetworkService private lateinit var movieRemoeteDataSource: MovieRemoteDataSource private lateinit var movieLocalDataSource: MovieLocalDataSource private lateinit var movieDao: MovieDao lateinit var movieRepository: MovieRepository overr..
코루틴을 잘활용할려면 결과를 반환 받아서 처리를 하고 작업의 취소까지도 완벽하게 해줘야한다. fun main() = runBlocking { val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // delay a bit println("main: I'm tired of waiting!") job.cancel() // cancels the job job.join() // waits for job's completion println("main: Now I can quit.") } 0.5초 간격으로 문자열을 1000회 출력하는 블록이다. 블록이 시작한 후 1.3초가 지나면 코..
앱 뿐만 아니라 모든 프로그램에서 비동기 처리는 굉장히 중요하다. 안드로이드에서 여러 비동기를 할 수 있는 메커니즘을 제공하지만 일부 메커니즘에는 굉장히 큰 러닝커브가 있다.(대표적으로 RxJava) JetBrains에서 코루틴이라는 비동기처리를 할 수 있는 API를 만들었다. 코루틴이 나오기 전 가장 핫한 키워드는 rx programming 이였을 것이다. 그러나 구글이 안드로이드 공식 언어를 자바에서 코틀린으로 변경한 이후에 대표적인 샘플 예제들인 blueprint와 snowflower 비동기 처리를 coroutine으로 바꿨다. 코루틴에 대한 영어자료도 최근에 많이 올라 오고 있고 외국 안드로이드 개발자는 코루틴을 많이 사용하고 rx에서 코루틴으로 넘어가고 있다고 들었다.(한국은 rx가 많이 사용중..
xd 에서 이미지를 클릭 후 command + e 클릭 후 내보내기 대상에서 안드로이드 선택 후 해당 프로젝트 위치를 찾아 res 까지 위치를 찾은 후 확인 하면 해상도별 이미지폴더가 생기면서 이미지가 옮겨진다... 오호 신세계~
기존에는 날짜를 저장할 때 string으로 저장했었다. 다시 불러올 때 timestamp로 변환해 현재 날짜와 비교해서 로직을 처리 했었다. 하지만 중복되는 코드를 볼 수 있었고 또한 룸에서 가져올 때 ORDER BY time DESC 했었을 때 문제점은 12시가 제일 높게 인식한다. (yy-mm-dd hh.mm.ss a 기준) 이 문제를 해결 하기 위해 long 타입으로 넣으면 간단하게 해결할 수 있었고 코드중복을 줄일 수 있었다. 기존 테스트 코드 private lateinit var local: String // 오늘 fun main() { getTime() // 현재 날짜 가져오기 val today = SimpleDateFormat("yy년 MM월 dd일", Locale.KOREA) val dat..
보호되어 있는 글입니다.