일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Reactive
- GCP
- MotionLayout
- SWIFTUI
- 테스트 자동화
- php
- paging
- Android
- RxKotlin
- Animation
- Koin
- rx
- MediaPlayer
- PagingLib
- Observable
- list
- 동영상
- mysql
- Kotlin
- junit
- mvvm
- 인앱결제
- MediaSession
- Android 13
- node.js
- google play
- SwiftUI Tutorial
- node
- android13
- databinding
- Today
- Total
목록android Tip (24)
봄날은 갔다. 이제 그 정신으로 공부하자
Singleton Pattern이란? 객체의 인스턴스가 오직 한개만 생성되는 패턴을 의미합니다. 싱글톤 패턴으로 생성된 인스턴스는 오직 한개만 생성되니 고정된 메모리 영역을 사용하기 때문에 해당 인스턴스에 접근할 때 메모리 낭비를 방지할 수 있고 이미 생성된 인스턴스를 활용하니 속도 측면에서도 이점이 있다고 볼 수 있습니다. 하지만 가장 큰 장점은 앱의 다른 화면 또는 클래스간에 데이터 공유가 쉽다는 장점이 있습니다. 싱글톤 인스턴스가 전역으로 사용되는 인스턴스이기 때문에 다른 클래스의 인스턴스들이 접근하여 사용할 수 있기 때문 입니다. 싱글톤 클래스는 멀티쓰레딩 환경에서 오직 한개의 인스턴스만 생성됨을 보장해야하기 때문에 이와 관련된 처리가 필요합니다. 예를 들어 내정보 관리 Class를 싱글톤 패턴으..
앞선 글(https://als2019.tistory.com/123)에서 설명한 것 처럼 iOS는 비동기 환경에서 실행된 다수 개의 Task 처리 완료 시 결과를 받아 처리할 수 있는 Dispatch Group을 지원합니다. android는 Dispatch Group을 지원하지 않지만 @Synchronized를 사용하면 iOS의 Dispatch Group과 동일하게 사용할 수 있습니다. 이글에서는 android 개발자를 위한 Dispatch Group에 대해 설명하도록 하겠습니다. 아래와 같이 두개의 Network API를 호출하고 비동기로 결과를 받는 코드가 있다고 가정해보겠습니다. MyNetworkModel.getList(offset: 0, limit: 20){ result -> // 작업할 내용 } ..
Splash Screen이란? 많은 Android앱들이 다양한 기능을 지원하고 또 점점 많은 라이브러리를 탑재하다보니 앱의 사이즈가 커져 사용자가 앱을 실행하기 위해 엡 아이콘을 눌러 실제 앱이 실행되는데까지 시간이 걸리는데 이때 사용자에게 첫화면이 보여지기 전까지 자연스럽게 노출되는 화면으로 Android 12에서는 모든 앱에 새로운 앱 실행 애니메이션을 사용하는 SplashScreen API를 지원합니다. android는 앱 실행을 아래와 같이 3가지(Cold Start, Warm Start, Hot Start)로 구분 할 수 있으며, Splash Screen은 아래 3가지 앱 실행 상태 중 "Cold Start"와 "Warm Start"일때만 동작합니다. Cold Start: 앱이 처음부터 실행되는..
잘되던 카톡 공유하기가 안된다면? Android 보안 정책의 강화에 따라 Android 11 이상의 단말에서는 앱이 다른앱에 접근하기 위해서는 manifest.xml 파일에 요소를 추가하여 접근하고자하는 앱의 패키지명 또는 intent Filter 서명을 포함해야하는데 해당 부분을 추가하지 않아 발생하는 문제입니다. 영향받는 API는 아래와 같습니다. - PackageManager.getPackageInfo(…) - PackageManager.getInstalledPackage(…) - PackageManager.queryIntentActivities(…) 조금 자세히 설명하면 Android 11 미만의 단말에서는 카톡이 설치되어 있는 경우 true를 반환하는 동작이 문제 없지만, Android 11 이..
안드로이드에서 animaion을 처리하는 방법은 크게 3가지로 나뉩니다. Animation을 사용하는 방법과 Animator를 사용하는 방법 그리고 마지막으로 MotionLayout이 있습니다. 안드로이드가 발표되면서 최초로 나온 것이 Animation이고 그후 Animator가 발표되었고 몇년전에 MotionLayout이 발표되었습니다. MotionLayout 관련된 내용은 이전 글 참고 부탁 드리겠습니다. https://als2019.tistory.com/16 이 글은 animation과 animtor의 차이에 대해 설명하는 글이 아니라 사용자가 아이콘 클릭 시 종처럼 흔들리는 애니매이션 효과를 줄 때 사용할 수 있는 다양한 방법에 대해 설명하기 위한 것입니다. 방법은 한가지만 있는 것이 아니므로 굳..
곰곰히 생각해보는 createScaledBitmap()과 compress() 함수 차이 이미지 관련 서비스 개발 시 개발자들이 자주 접하는 함수가 위 두 개 함수 입니다. 뒤에 자세히 설명하겠지만 대략 설명하자면 createScaledBitmap()함수는 사이즈가 큰 비트맵을 내가 원하는 사이즈에 맞게 리사이징하는 함수이고 compress()함수는 이미지의 사이즈는 그대로 두고 퀄리티를 조절하는 함수 입니다. 이렇게 설명하면 고개를 끄덕거리는 분들도 있겠지만 고개를 끄덕이는 분들은 이글을 잘 읽지 않을테니... ㅠ_ㅠ 예를 들어 설명하자면, 읽어올 사진의 사이즈가 가로*세로 2048*2048 사이즈의 5MB 메모리 용량(저장된 파일 사이즈 아님.)을 가진 사진이라고 할 때 createScaledBitma..
지난번 글에서 이미지 정보를 읽어올 때 ExifInterface를 사용해서 정보를 읽어오라고 글을 작성하였는데 이미지 정보는 단말의 MediaStore DB에서도 읽어올 수 있습니다. 이번 글에서는 MediaStore DB와 ExifInterface에서 사진 정보를 읽어오는 방법에 대해 설명하도록 하겠습니다. 우선 MediaStore DB부터 MediaStore DB는 대략 아래와 같은 정보를 읽어올 수 있습니다. 아래는 의미 있어보이는 컬럼만 정리한 것으로 삼성 갤럭시 노트10+를 기준으로 55개의 컬럼을 가지고 있습니다. MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, MediaStore.Images.Media.ORIENTATION, Media..
해당 글은 Android 기기의 갤러리에서 사진을 읽어와 리스트로 보여주거나 큰 이미지를 보여주는 작업을 하는 개발자들에게 도움을 주고자 작성하였습니다. 사실은 이렇게라도 기록을 해놔야 제가 다음에 작업을 할때 안까먹을 것 같아서 ㅠ_ㅠ 비트맵에 대해 쓸 말이 많아 글을 여러 개로 나누어서 작성하도록 하겠습니다. ^___^;;; 갤러리에서 사진을 가져와 화면에 보여주는게 별거 아닌 것 같아도 제대로 개발하면 나름 고급 기술이 많이 들어갑니다. 하나하나 풀어보겠습니다. 갤러리에서 사진을 가져오는 것은 지난번 글(https://als2019.tistory.com/54)에서 자세히 설명하였으니 넘어가고 이번 글에서는 갤러리에서 사진을 효율적으로 그리고 제대로 읽어오는 것을 중점으로 설명하겠습니다. 이전 기억을..