Frontend/Android(30)
-
Flow usage pattern
var items: Flow> = ...items.map { list -> list.filter { it.type == REGULAR }.sortedWith( compareBy { if (type.sortOrder == SortOrder.NAME) it.name else it.value }, )}Flow가 List을 emit 하는데, emit 하는 List에 대해서 뭔가 처리하고 나서 이를 collect 하는 곳으로 보내기 위한 중간(intermediary) 과정의 동작을 구현하는 부분이 mapFlow의 map 연산자는 항상 Flow를 반환그래서 결과는 다시 Flow>임#Flow의 collect는 코루틴 내에서 실행되어야 함그래서 다음과 같이 구현하..
2025.06.19 -
Android Service ex. (w/ AIDL)
defininition두 숫자를 입력으로 받아 합한 결과를 제공하는 간단한 서비스를 정의해 보겠습니다.다음과 같이 add 메서드를 선언한 IMyAidlInterface라는 이름의 인터페이스를 정의합니다. defines AIDL file// IMyAidlInterface.aidlpackage com.example.aidl;interface IMyAidlInterface { int add(int x, int y);}Generated codeBuild > Make Project를 수행하면 다음의 파일이 생성됩니다. app/build/generated/aidl_source_output_dir/debug/out/com/example/aidl/IMyAidlInterface.java생성된 파일의 내용은 다음과 ..
2025.06.11 -
Android Studio 심볼(함수, 변수 등) 정의 부분으로 가기가 안되는 경우
문제 상황심볼(함수, 변수 등) 정의 부분으로 가기가 안되는 경우코드 위에에서 ctrl + 마우스 좌측 버튼을 눌러도 해당 코드 정의 부분을 갈 수 없는 경우문제 상황 상세 설명Android Studio의 프로젝트에서 분명히 함수 정의가 있는 부분인데,provider.startProcessing() 와 같이 있을때 Provider 클래스에는 startProcessing() 메서드가 분명히 존재함에 불구하고 provider.startProcessing() 위에서 ctrl을 누르고 마우스 왼쪽 버튼을 누르면,"cannot find declaration to go"가 뜨는 경우그리고 코드가 무채색으로 (색상이 입혀지지 않은채로) 표시됨해결 방법File > Sync project with Gradle files..
2025.05.07 -
오래된 장치(폰)에서 안드로이드 앱을 실행하는 방법
minSdk와 targetSdk의 version을 29와 같이 오래된 버전으로 낮춰서 빌드하면 오래된 장치에서도 앱을 실행할 수 있습니다. android { namespace = "com.example.gesture_detection" compileSdk = 35 defaultConfig { applicationId = "com.example.gesture_detection" minSdk = 29 targetSdk = 29 versionCode = 1 versionName = "1.0" ...
2025.03.18 -
LiveData 사용 이유
LiveData는 '관찰' 가능한 data holder 데이터 변경 시 UI 컴포넌트(activity 혹은 fragment)에 알림 LiveData 외 Flow, RxJava의 Observable 사용 가능 혹은 Coroutines에서 suspend 함수로 query 작성 LiveData는 Android architecture에서 잘 지원해 주기 때문에 이를 사용하는 것이 좋음 ex. ViewModel의 lifecycle aware 기능에서 LiveData를 사용
2025.02.27 -
Android에서 Unresolved reference: activity_main 에러
activity_main.xml의 이름을 변경한다던가 하면 바로 찾을 수 없는 에러가 발생합니다. 이에 다시 이름을 원복해도 에러는 여전히 발생합니다. 왜 그럴까.. 모두 원복했는데, 하고 코드를 보고 있는데 다음의 코드가 자동으로 추가되어 있는 것을 확인할 수 있었습니다. ... import android.R ... class MainActivity : AppCompatActivity() { ...의심스러움에 위 import android.R 부분을 막아보니, 에러가 더 이상 발생하지 않습니다. Android Studio에서 리소스가 없어졌을 시 (이름 변경에 의해) 이를 찾을 수 있는 곳을 android.R package라 생각하고 이를 자동으로 추가하는 것 같습니다. 개선이 필요해 보이네요.
2023.02.16