반응형

전체 글 493

[Android] 루트 액티비티(Root Activity) & 어플리케이션 클래스(Application class) 간단히 알아보자

🎈 Root Activity란? 어플리케이션을 켰을 때 실행되는 최초의 Activity Android 어플리케이션의 AndroidManifest.xml에서 intent-filter요소 안에 MAIN으로 선언되어 있으며 보통 LAUNCHER도 category 요소로 같이 선언되어 있다. 그런데 이러한 root activity보다 더 먼저 실행되는 것이 있다. 바로 Application 클래스! 🎈 Application 클래스란? application 클래스는 어느 Component(Activity, Service, Intent 등)에서나 공유할 수 있는 전역 클래스이며 공동으로 관리해야하는 데이터를 작성하기에 적합하다. Application 클래스는 root activity와 마찬가지로 AndroidMan..

📜 TIL 2022.10.26

[Android] Network

🎈 Network 두대 이상의 컴퓨터를 연결하는 것 네트워크가 필요한 이유 1) 클라이언트(앱) -> 인터넷 -> 서버 : 요청 -> 내가 지금 화면을 그리려고 하는데 데이터좀 줘 2) 서버 -> 인터넷 -> 클라이언트(앱) : 응답 -> 화면을 그릴 수 있는 데이터 여기있어 네트워킹 서버와 클라이언트의 의사소통 네트워크 약속(프로토콜)이 존재 대부분의 앱들이 정보를 서버로 부터 받아서 화면을 구성한다 문제점 매번 똑같은 화면을 그릴 때 매번 똑같은 데이터를 전달받아야 한다 -> 낭비다 해결책 캐싱 한번 받은 데이터를 클라이언트가 로컬 데이터베이스에 저장 다시 필요하면 서버에 요청할 필요없이 로컬 데이터베이스를 이용 단점 캐싱 구현 난이도 높음 프로토콜의 종류 FTP : 파일 전송 규약 SMTP : 메일..

📜 TIL 2022.10.25

동기처리 비동기 처리에 대해 매우 쉽고 간단히 정리!

동기 요청과 결과가 동시에 일어난다 설계가 매우 간단하고 직관적 하지만 결과가 주어질 때 까지 다른작업을 하지 못하고 대기해야 한다 [참고] 블록 상태 결과가 주어질 때 까지 다른작업을 하지 못하고 대기해야하는 상태 예) 카페의 바리스타가 한 손님의 주문을 받고, 커피가 완성될 때 까지 손님은 그 자리에 서서 아무것도 하지 않고 대기해야한다고 한다고 함. 그렇지 않으면 커피를 주지 않겠다고 하는 인성 논란의 바리스타... 😲 비동기 요청과 결과가 동시에 일어나지 않는다 동기보단 설계가 복잡 하지만 결과가 주어질 때 까지 다른작업을 할 수 있어 자원을 효율적으로 사용 가능 [참고] 논블록 상태 결과가 주어질 때 까지 다른작업을 할 수 있는 상태 예) 카페의 바리스타가 손님의 주문을 받은 뒤 커피를 만들고 ..

📜 TIL 2022.10.21

[Android] values의 strings.xml에 없는 값을 사용해도 실행이 잘 되는 경우

🎈 문제 외주를 맡겼던 소스에 위와 같이 string값을 찾을 수 없다는 빨간색 에러가 떴다. 그런데 막상 앱을 실행시키면 별다른 오류없이 잘 실행된다. 🎈 분석 우선 해당 데이터가 어디에 있는지 확인하기 위해 import한 R의 위치가 어디인지 확인해보았다. 그리고 해당 패키지에 있는 res - values - strings.xml을 확인해보았지만 위 데이터는 찾아볼 수 없었다. 🎈 해결 이러한 이유는 외주를 맡겼던 패키지에서 존재했던 default_web_client_id값이기 때문에, 현재 앱 내에서의 어느 패키지의 values - strings.xml 위치에도 해당 데이터가 전혀 존재하지 않지만 바이너리 파일 형식으로 어딘가에 남아있기 때문에 앱은 문제없이 잘 실행되는 것이다. 실제로 해당 앱의 ..

📜 TIL 2022.10.20

[Android] Kotlin 파일은 Java파일의 Lombok 라이브러리와 호환되기 힘들다

📌 문제 재직중인 회사의 Java와 Android Studio 기반 어플리케이션을 Java언어에서 Kotlin으로 컨버팅하라는 업무 지시가 내려졌다. 컨버팅 하던 중 Java파일로 실행하였을 땐 괜찮았던 get메서드가 인식이 되지 않았다. 소스를 분석해보니 Java파일에선 lombok 라이브러리를 사용해 getter/setter를 생성해주었었다. 즉, Kotlin 파일이 lombok라이브러리의 getter/setter을 인식하지 못하고 있는 것이었다. 🎈 결정 이에 대해 많은 고민을 하였지만 결국 기존 Java코드에서 lombok 라이브러리를 제거하면서 까지 Kotlin으로 컨버팅하기로 결정하였다. 비록 Lombok을 사용함에 따라 얻을 수 있었던 코드의 간결함이란 장점을 포기해야하지만, Kotlin으로..

📜 TIL 2022.10.19

[Android] Java 프로젝트에 Kotlin 언어 적용하기

Java로 만들어진 프로젝트에 Kotlin 언어를 사용하기 위해선 Kotlin언어에 대한 설정이 되어있어야 한다. Android Studio의 [File] - [Settings] 로 들어간 후 검색창에 kotlin을 검색한다. 만약 plugin이 설치되어 있지 않다면 설치를 진행해주자. 설치가 되어있는 상태라면, 위 빨간 밑줄과 같이 Kotlin 버전을 확인해주자. 212-1.7.10-release-333-AS5457.46 여기서 버전은 1.7.10을 가리킨다. Project build.gradle파일에 들어가 아래와 같이 Kotlin의 버전과 classpath가 선언되어있는지 확인해주고 그렇지 않다면 선언해주자. // Project build.gradle file. buildscript { ext.ko..

📜 TIL 2022.10.19

[Android] 안드로이드에서 Notification이란?

📑 Notification Notification이란, 위 사진과 같은 것을 이야기한다. 사진 속 Notification은 Notification 중 가장 간단한 형태이며 아이콘, 제목, 컨텐츠를 보여준다. 이러한 Notification을 만드려면 먼저 Notification Channel을 생성해야 한다. 다음 코드는 Channel을 생성하는 코드이다. private fun createNotificationChannel(context: Context, importance: Int, showBadge: Boolean, name: String, description: String) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val channelId ..

📜 TIL 2022.10.14

[Network] 네트워크에서 헤더와 패킷이란 무엇일까? 간단 정리

🔖 Header 데이터 앞 부분에 파일에 대한 정보를 실어놓은 부분 주로 데이터 형식 혹은 시간과 주소에 대한 정보로 이뤄짐 🙋‍♀️ 데이터를 주고 받는 과정을 확인함으로서 Header를 이해해보자 데이터를 전송하는 측면의 레이어 상위층에서 받은 데이터에 Header를 붙여 하위층에 넘긴다 점점 더 하위층으로 내려갈 수록 패킷 전체 크기는 커진다 데이터를 전달받는 측면의 레이어 전달받은 패킷에 포함된 Header 정보를 사용하여 필요한 프로세스를 거친 후 Header를 제거하고 상위층으로 보낸다 점점 더 상위층으로 올라갈 수록 패킷 전체 크기는 작아지고 결국 전송측에서 보낸 데이터만 남게된다. [참고] Packet이란? Network에서 데이터를 주고받을 때 정해놓은 규칙 정보를 보낼 때 특정 형태를 맞..

📜 TIL 2022.10.13

[Android] MVVM패턴에 대해 간단히 알아보자

🎈 MVVM 패턴이란? ✨ 구성요소 Model, View, ViewModel로 이루어져있다. View 사용자에게 보여지는 레이아웃 사용자와의 상호작용으로 받은 입력을 ViewModel에 전달한다. View는 UI업데이트를 위해 ViewModel과 Binding하게 된다. 즉, View가 ViewModel을 구독하여 ViewModel의 상태가 변경되면 그 이벤트를 받아 UI를 갱신한다 Model 데이터와 관련된 비즈니스 로직을 처리하는 곳이다. DB나 네트워크 등 다양한 데이터 소스로 부터 필요한 데이터를 준비한다. ViewModel Model에서 가져온 데이터를 View에 뿌려줄 수 있는 형태로 가공한다. View는 ViewModel의 reference를 가지지만 ViewModel은 View에 대한 정보..

📜 TIL 2022.10.12

[Android Studio] 안드로이드 SDK location not found 해결하기

팀원이 기존에 만든 앱을 전달받아서 해당 파일을 내 컴퓨터로 옮겨 열어보았다. Android Studio로 옮기자마자 뜬 안내창! Sync Android SDKs The SDK path '~~~' does not belong to a directory. Android Studio will use this Android SDK instead: '~~~' and will modify the project's local.properties file. 이 프로젝트는 팀원의 컴퓨터에 있는 SDK경로로 설정되어있기 때문에 위와 같은 안내문이 뜨는 것이다. 내 컴퓨터에 SDK가 있는 파일 위치로 local.properties파일을 Android Studio가 수정하여 준다는 안내문이다. 🚨 문제상황 OK를 눌렀음에도..

기타/🚨 에러 2022.10.07
반응형