테스트의 경우 실제 단말기로 테스트 했으며, 1. M12 - 안드로이드 버전12(API 31) 2. S8+ - 안드로이드 버전9(API 28) 위 2가지의 기종으로 테스트를 진행함 30미만의 해상도 높이의 경우 Navigation Bar 높이도 가져와야 한다 S8+ 은 사용자가 직접 해상도를 선택할 수 있는 설정이 있다 해당 설정에 맞게 단말기 해상도를 가져온다 코드 1 : MainActivity.kt class MainActivity : AppCompatActivity() { private lateinit var bOutput: Button private lateinit var tvMsg: TextView override fun onCreate(savedInstanceState: Bundle?) { s..
이때까지 작성한 글에 맞춰 1. new thread에서 작업 class 호출 2. 1초당 count 1증가 3. count 가 10이 될 시 강제 에러 발생 4. 특정 에러 상황 분기 처리 5. count 증가나 에러 발생 시 text를 ui에 반영 위 기준으로 예제를 만들어보기로 한다 작성한 쓰레드 생성 글은 상속받고 사용하지만 이번에는 상속받지 않고, class로 처리해서 쓰레드에서 class를 호출하도록 구현했다 ui 변동의 경우 고차 함수를 활용했으며, runOnUiThread를 통해 변경이 이루어지게 구현했다 코드 1 : MainActivity.kt class MainActivity : AppCompatActivity() { private lateinit var bStart: Button pri..
[상황] 메인 쓰레드가 아닌 새로운 쓰레드에서 로직을 수행 로직 수행 중 UI 변경이 일어나는 코드를 수행 시 에러 발생 [참고 플랫폼] 더보기 1. Android Studio Bumblebee | 2021.1.1 Patch 2 | Runtime version: 11.0.11 2. 실행 Device : 갤럭시 M12(android 12) [에러 내용] android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. [해결 방법] 메인 쓰레드가 아닌 다른 쓰레드에서 UI 변동이 일어나면 해당 에러를 발생시킨다 이를 위해 UI 변동이 ..
[상황] tvLog 란 TextView 객체를 사용할려 했지만 kotlin.UninitializedPropertyAccessException: lateinit property tvLog has not been initialized 에러를 발생함 [참고 플랫폼] 더보기 1. Android Studio Bumblebee | 2021.1.1 Patch 2 | Runtime version: 11.0.11 [에러 내용] kotlin.UninitializedPropertyAccessException: lateinit property tvLog has not been initialized [해결 방법] 해당 에러는 아주 간단한 에러인데 lateinit 을 붙인 변수를 초기화를 시켜주지 않으니 해당 property가 ..
특정 시간, 날짜 등 시간을 기준으로 하여 알림을 울리는 작업을 하고자 한다 사실 AlarmManager 만 있는건 아니지만 도즈모드의 문제 때문에 AlarmManager 를 선택했다 도즈모드에 대해서는 아래 android 공식문서에서 확인 하면 될 듯 싶다 https://developer.android.com/training/monitoring-device-state/doze-standby 잠자기 및 앱 대기 모드에 맞게 최적화 | Android 개발자 | Android Developers 앱에서 Android 6.0의 절전 기능을 테스트하고 최적화합니다. developer.android.com 이번에는 사용자가 특정 날짜를 기입함으로써 기입한 날짜에 알림을 울리게 해봤다 BroadcastReceive..