본문 바로가기

앱 개발

(83)
내일배움캠프 후기 - 솔직 1) 내일배움캠프 수료최종 프로젝트 발표회와 함께 사전캠프부터 시작된 반년 동안의 내일배움캠프 과정을 뿌듯한 마음으로 수료하였습니다. 2) 내일배움캠프 이전의 삶 전공자가 아니고 코딩에 대해서 아무것도 몰랐습니다. 회사 생활을 할 때 사내 시스템을 다루고 모바일 앱 개발에 참여한 적은 있지만, 이렇게 개발 업무를 전문적으로 학습하게 될지는 생각하지 못했습니다. 3) 내일배움캠프를 선택한 계기 1년 전에 코딩 공부를 처음 시작했고 인프런 강의 등을 수강하면서 부트캠프에 대해서 계속 알아보고 있었습니다. 온라인 과정이 괜찮을까 하는 고민을 하고 있었는데, 내일배움캠프 광고를 통하여 들어간 홈페이지 커리큘럼과 인터넷 검색을 통한 수강 후기를 보고 선택하였습니다. 4) 내일배움캠프의 장점매 프로젝트마다 다양한 ..
검색 결과 화면을 유지하기 1) ViewModel을 사용한 데이터 유지ViewModel은 안드로이드 아키텍처 컴포넌트의 일부로서 화면 회전과 같은 구성 변경에도 데이터를 유지한다.SearchViewModel.ktclass SearchViewModel : ViewModel() {    private val _searchResults = MutableLiveData>()    val searchResults: LiveData> get() = _searchResults    fun updateSearchResults(results: List) {        _searchResults.value = results    }}2) Fragment에서 ViewModel을 사용하여 데이터 유지ViewModel을 사용하여 데이터 변경 시점을 관..
DTO, DTA, Entity 1) DTO (Data Transfer Object)계층 간 데이터를 전송할 때 사용되는 객체이다. 주로 네트워크 통신, API 응답, 서비스 간 데이터 교환 시 사용된다.- 특징비즈니스 로직을 포함하지 않고 데이터만 보유한다.네트워크를 통해 전송하거나 파일로 저장할 수 있도록 직렬화가 가능해야 한다.데이터를 받아 사용하는 측에서는 주로 읽기 전용으로 사용한다.- 예시data class UserDTO(    val id: Long,    val name: String,    val email: String)2) DTA (Data Transfer Architecture)데이터 전송을 위한 아키텍처나 패턴을 말한다. 컨텍스트에 따라 달라질 수 있다.- 특징시스템 간 데이터 전송을 효율적으로 설계하는 패턴이나..
무한 스크롤 기능 구현 (1) ScrollListener 1. RecyclerView 및 Adapter 설정 2. RecyclerView에 ScrollListener를 추가하여 스크롤 위치를 감지하고 새로운 데이터를 로드// class SearchFragment override fun onViewCreated(view: View, savedInstanceState: Bundle?) {    super.onViewCreated(view, savedInstanceState)    searchAdapter = SearchAdapter(object : SearchAdapter.OnItemClickListener {        override fun onClick(data: HomeVideoModel) {            (req..
Process, Thread - Process (프로세스)정의: 프로세스는 실행 중인 프로그램의 인스턴스이다. 각 프로세스는 독립된 메모리 공간을 갖고 실행된다.메모리: 프로세스는 각각 독립적인 주소 공간(코드, 데이터, 힙, 스택)을 갖는다.자원 할당: 프로세스는 운영 체제에 의해 독립적으로 자원을 할당받는다.통신: 프로세스 간의 통신은 IPC(Inter-Process Communication) 메커니즘을 통해 이루어진다. 여기에는 파이프, 소켓, 메시지 큐 등이 포함된다.오버헤드: 프로세스 간의 문맥 전환에는 상대적으로 큰 오버헤드가 발생한다.독립성: 한 프로세스의 문제는 다른 프로세스에 영향을 주지 않는다. - Thread (스레드)정의: 스레드는 프로세스 내에서 실행되는 작은 실행 단위이다. 여러 스레드는 하나의 프로세스 내..
MVVM 패턴 사용 이유 - 명확한 역할 분리Model: 데이터 소스 및 비즈니스 로직을 처리한다. 데이터베이스나 네트워크 통신과 같은 작업을 담당한다.View: 사용자 인터페이스(UI)를 담당한다. 사용자 입력을 처리하고 데이터를 화면에 표시한다.ViewModel: View와 Model 간의 중개자 역할을 하며 UI 관련 로직을 포함한다. 데이터 변화를 감지하여 View를 업데이트한다.- 단위 테스트 용이성View와 비즈니스 로직이 분리되어 있으므로 ViewModel과 Model을 쉽게 테스트할 수 있다. ViewModel은 안드로이드 프레임워크에 의존하지 않기 때문에 단위 테스트 작성이 용이하다.- 유지보수 및 확장성코드가 잘 구조화되어 있어 유지보수가 용이하며, 새로운 기능을 추가할 때 기존 코드를 수정하지 않고 확장할 수..
Android 4대 컴포넌트 1) Activity (액티비티)사용자 인터페이스를 제공하는 컴포넌트로서 화면에 표시되는 UI를 구성한다. 사용자가 화면을 보고 상호작용할 수 있는 모든 것이 액티비티를 통해 이루어진다.생명 주기: onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()전환: Intent를 사용하여 다른 액티비티를 시작하거나 데이터를 전달할 수 있다.예시: 로그인 화면, 설정 화면 등2) Service (서비스)백그라운드에서 오래 실행되는 작업을 수행하는 컴포넌트로서 사용자와 직접 상호작용하지 않지만 애플리케이션이 실행 중인 상태를 유지하면서 작업을 계속한다.Started Service: 시작 후 백그라운드에서 무한히 실행됨 (startService())B..
API 사용하여 동영상 가져오기 1) Retrofit 설정Retrofit은 Android를 위한 타입 safety HTTP 클라이언트 라이브러리이다.build.gradle (Module: app)dependencies {    implementation 'com.squareup.retrofit2:retrofit:2.9.0'    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'    implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0'}2) API 인터페이스 정의Retrofit 인터페이스를 정의하여 API 엔드포인트와 상호작용한다.interface ApiService {    @GET("search")    suspe..
[심화 프로젝트] 회고 1) 튜터님 피드백- 즉각적인 프로젝트 내용 피드백 수용 자세가 좋았음- 최종 프로젝트에는 ListAdapter와 Flow를 사용해보기- 피그마 무료 레퍼런스 참고하여 UI를 구성하면 좋을 것2) Keep- 안드로이드에서 기본적으로 제공하는 디자인이 아닌 폰트나 색상 비율 등을 직접 적용하여 기존 프로젝트보다 UI 디자인이 더 발전할 수 있었음- 분업이 매우 잘 이루어지고 이슈 발생시 공유가 잘되어 쉽게 해결했음- 처음 사용해보는 기술도 시도하는 도전 정신3) Problem* 문제- 세심한 예외처리가 조금 부족했었던 것 같음 (ex. 가로 모드, 빌드 버전 등)- Room 사용 관련하여 앱 종료 후 재실행하는 것을 시연 영상에 넣었으면 하는 아쉬움* 원인- 기능 구현에만 집중을 하여 세심한 부분에 대한 ..
Hilt & ViewModel Hilt를 사용하면 ViewModelProvider를 명시적으로 호출할 필요가 없는 이유는 Hilt가 ViewModel의 생명주기와 종속성 관리를 자동으로 처리해주기 때문이다. 이를 통해 더 간결하고 유지보수하기 쉬운 코드를 작성할 수 있다. Hilt를 사용하면 ViewModel을 주입받기 위해 다음 단계를 따른다.1) Hilt 모듈 생성:@HiltViewModel 주석을 사용하면 Hilt가 ViewModel을 자동으로 관리해준다.2) ViewModel 클래스에 @HiltViewModel 주석 추가:ViewModel 클래스에 @HiltViewModel 주석을 추가하여 Hilt가 해당 ViewModel을 주입할 수 있도록 해준다.3) by viewModels() 사용:Fragment 또는 Activity에..