Kotlin(37)
-
Kotlin value class
요즘 노션에서 모든 기록을 다 하다보니 티스토리에 소홀해졌다 회고도 꾸준히...쓰고있는ㄷ ㅔ 앞으로의 내용들중 블로그에 쓸 만큼 긴 글들은 기록을 옮겨두려고 한다 그 시작은 value class..! wrapper class(가독성을 높이기 위한 class)의 비용을 줄여보고자 나온 class 아래와 같이 사용하면 된다 @JvmInline value class Color private constructor(val rgb: Int) { companion object { fun rgb(rgb: Int) = Color(rgb) } } value 키워드를 통해 value class를 정의할 수 있다 이렇게 정의된 value class는 컴파일러에 의해 최적화의 대상이 된다 @JvmInline Annotation..
2023.02.16 -
android sdk 31 타겟팅
이제 11월부로.....sdk31을 타겟팅하지 않은 앱은 업데이트가 거절되었다. 암튼 그래서...sdk 31 타겟팅을 하면서 수정한 것들을 기록해보기로한다. 1. uses permission 설정(알람기능 정상 동작 위해) 안드로이드 31 이후로, 정확한 알림기능을 사용하기 위해서는 다음과같은 권한이 필요하다. 알림 안 쓴다면 안 써도 됨. 하지만 난 있으니까 썼다. 2. android export 설정(intent filter가 들어가는 부분에 모두 명시해야함) android:exported="true" 앱 외부와 관련 있으면 true, 아니면 false로 설정한다. intent filter가 있는 곳만 추가해주면 된다. 3. pending intent 설정 val pendingIntent = if (..
2022.11.17 -
라디오 다이얼로그 컴포넌트 제작기
좋은 코드는...추상화가 잘 된것. 당연함. 어디서든 갖다 쓸 수 있고. 다형성이 적절히 보장된 것... 최적은 아니지만 어쨌든 내 노력을 갈아서 했으니 기록하고자 오랜만에 글을 쓴다. 만든건 다이얼로그! 대부분의 다이얼로그가 존재하지만 라디오 버튼 + 텍스트 필드가 있는 기본 다이얼로그가 추가로 필요해서 만들었다. 1. 일단 공통 테마부터 만들어준다 다이얼로그는 뭐..다 비슷하게 생겨먹었으니까 공통 테마를 하나 만들어준다. 2. 사용하고자 하는데서 상속해준다 class TwoBtnWithRadioDialog( context: Context, private val title: String, private val sub_text: String, private val radioButtonList: Array..
2022.11.07 -
화면 회전시 이전 데이터 유지하기
코드 지워야돼서 기록한다 원하는 액티비티에 이거 추가 android:configChanges="orientation"(in Menifest) 이런 식으로 데이터 고정 뿐만 아니라, 회전 후에 새로운 화면을 적용한다든지 새로운 액션이 필요하면 override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT // 가로 전환시 || newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ) { // 세로 전환시 binding..
2022.04.21 -
BroadCastManager로 이벤트 수신하기
또 까먹을까봐 우당탕탕 쓰러왔다. 여담이지만 최초 기획자도 내가 아니고, 설계자도 아니고, 최초로 구현한 사람도 내가 아닌 어플의 이슈를 대응하다보면... 한번에 클린코드가 나오기 어려운것 같다. 그래서 개판으로 짜고있음 ㅇㅅaㅇ근데 우짜겠노 급한데 나중에 리팩토링 하거나 해야지 뭐... 어쨌든 오늘은 특정 이벤트 발생 즉시 다른 액티비티에서 이를 감지하고 뷰를 전체적으로 갱신하는 로직이 필요했다. 안드로이드 개발자라면 다 아는 4대 컴포넌트...중 하나인 BroadcastReceiver를 이용해 구현하기로 한다. 1. 이벤트 보내는 함수 등록 private fun sendIntent(){ val intent = Intent(EVENT_NAME) LocalBroadcastManager.getInstanc..
2022.03.25 -
비동기처리에서 특정 기능들만 순서대로 처리하기
업데이트 쳐내느라 새로 알게된거 하나도 정리 안 했다..ㅎ 어쨌든 대충 테스트배포 끝냈으니 기억을 위해 기록한다. 적어도 통신을 이용하는 어플리케이션을 개발하다보면, 통신에 관련된 것을 전부 비동기로 처리하게 된다. 당연함....동기로 하면 괴오래걸림;; 그러나 가끔은 몇 개를 순서대로 처리해야 할 일이 생긴다. 예를 들면 뭐 1번의 값을 받아온 후에 2번이 돌아가야한다던지... 그럴때를 위한 기능들이다. 1. withContext : 해당 작업을 끝낼 때 까지 코루틴을 일시정지하기 위해 사용한다 - async와 동일한 결과값을 반환한다 - async{ }.await() 과 유사 - 코루틴 내부나 susfend 함수 안에서 구현이 가능 - 콜백이 필요 없이 코드의 쓰레드 풀을 제어할 수 있기 때문에 네트..
2022.03.23