개발새발 - IT 기술블로그
article thumbnail
[안드로이드] 웹뷰(WebView)(4) - 쿠키&세션 알아보기🍪
Android 2024. 1. 5. 17:19

안녕하세요. 이번 포스팅은 웹뷰 시리즈 4번째인 웹뷰에서 쿠키 사용해보기 입니다. 지난 시리즈 동안 웹뷰를 직접 만들어보기도 하고, 생성 및 소멸 단계에 대해 알아보기도 하고, 캐시에 대한 개념도 공부해 보았는데요. 이번엔 웹 페이지에 데이터를 저장하고 불러오는 쿠키와 세션에 대해 학습해보겠습니다. 지난 포스팅이 궁금하신 분들은 아래 링크를 참고해주세요! 2022.12.26 - [Android] - [안드로이드] 웹뷰(WebView)(1) - 앱 브라우저에서 호출 2023.01.03 - [Android] - [안드로이드] 웹뷰(WebView)(2) - 접근과 제어 2023.09.04 - [Android] - [안드로이드] 웹뷰(WebView)(3) - 브라우저 캐시 사용하기 쿠키란? 쿠키(Cookie)는..

[안드로이드] 에러 'file found with path 'META-INF/DEPENDENCIES'. Adding a packagingOptions block may help, please refer to...'
Android 2023. 11. 30. 15:33

에러 내용 빌드를 진행하던 도중 아래와 같은 내용의 에러가 발생하면서 빌드가 캔슬 됨. 2 files found with path 'META-INF/DEPENDENCIES'. Adding a packagingOptions block may help, please refer to https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/dsl/ResourcesPackagingOptions for more information 에러 원인 프로젝트 gradle에 implement 되어있는 외부 라이브러리들의 버전이 변경 혹은 추가 되면서 기존에 존재하던 Meta 파일과 캐시가 중복되는 현상이 발생했기 때문. 해결 방법 ..

[안드로이드] Room Primary Key 자동 생성 하는 방법
Android 2023. 10. 18. 14:58

코틀린에서 Room을 사용할 때 PrimaryKey로 설정한 Id를 자동으로 생성하고 1씩 증가시키는 방법에 대해 알아보겠습니다. @Entity data class MusicEntity( var id: Long, val data1: String, val data2: String, val data3: Int ) 위의 엔티티 구조로 데이터 클래스를 생성하면 테이블의 필드 값을 입력할 때 id를 직접 선언해주지 않으면 에러가 납니다. 아래와 같이 Long 데이터 타입의 Id를 PrimaryKey로 생성하고 Room 라이브러리의 autoGenerate = true 옵션을 적용시켜주면, Insert 과정에서 id를 직접 입력해주지 않아도 자동으로 생성되며 index를 값으로 가집니다. @Entity data cl..

article thumbnail
[안드로이드] 가로모드 대응하기(Kotlin)
Android 2023. 10. 10. 12:37

안녕하세요. 이번 포스팅에선 가로모드에서의 레이아웃을 구현하고 적용시키는 방법에 대해 알아보겠습니다. 진행 순서는 아래와 같습니다. TODO List 1. 가로모드(landscape) 레이아웃 생성하기 2. 가로모드로 전환하기 - 대응 방식 3. 가로모드로 전환하기 - 고정 방식 개요 보통 레이아웃을 디자인 할 때 세로로된 화면만을 디자인하게 됩니다. 그렇게되면 사용자가 화면을 회전하였을 경우 세로와 가로의 비율이 반전되기 때문에 뷰가 사라져 보이거나 아래와 같이 겹쳐 보일 수 있죠. 또한, 대시보드나 동영상 플레이어 같은 앱을 구현할 땐 가로모드를 필수적으로 사용하는 경우도 있기 때문에 구현 방법에 대해 알아보겠습니다. 구현 가로모드 레이아웃 생성하기 activity_main.xml 의 가로모드 레이아..

article thumbnail
[안드로이드] 앱 백그라운드 전환 감지하기 - 코틀린&자바
Android 2023. 9. 19. 10:34

안녕하세요. 이번 포스팅에서는 앱이 백그라운드로 전환되고, 다시 포그라운드로 돌아오는 이벤트를 감지하는 기능에 대해 알아보겠습니다. 간단하게 설명드리면 LifecycleEventObserver와 Application을 implement 하여 생명주기에 발생에 따라 이벤트를 감지하여 처리하는 구조입니다. 간단한 예제와 함께 설명드리겠습니다. 결과 GIF🎬 아래와 같이 백그라운드로 전환 후 다시 돌아오는 이벤트를 반복하여 확인했습니다. 결과 로그 최초 포그라운드로 접근시 찍히는 로그입니다. 백그라운드로 전환될 때 찍히는 로그입니다. 다시 포그라운드로 전환될 때 찍히는 로그입니다. 본문 위의 로그에서 보이듯 targetState와 event의 Lifecycle이 다릅니다. targetState는 LifeCyc..

[안드로이드] 코틀린 typealias에 대해 알아보기
Android 2023. 9. 6. 10:14

안녕하세요. 이번 포스팅에서는 코틀린의 typealias에 대해 알아보겠습니다. 코틀린의 typealias 키워드를 직역해보면 입니다. 말 그대로 타입(유형)에 별명을 지어주는 것인데요. 공식문서를 참고하거나 Kotlin Weekly를 참고해보면, typealias는 타입의 이름이 너무 길거나 중복되는 경우 좀 더 읽기 쉬운 이름으로 변경하기 위해 사용한다고 합니다. 예를 들어, 아래와 같이 변수를 생성한다고 한다고 할 때..벌써부터 머리가 어지럽습니다. var type: LiveData 만약 변수가 아니라 함수나 데이터 클래스에 중복되어서 들어간다고하면 정신이 혼미해지죠 data class Type(val name: LiveData, val value: LiveData) 그 때, 우리는 제너릭 타입의 ..

article thumbnail
[안드로이드] @JvmStatic의 역할은? + 확장 함수의 개념
Android 2023. 9. 5. 16:14

안녕하세요. 이번 포스팅에서는 JvmStatic이라는 어노테이션이 하는 역할에 대해서 알아보겠습니다. 간단한 예제로 결과와 함께 설명드리겠습니다. 결론 JvmStatic 어노테이션은 자바 파일에서 코틀린의 함수나 메서드를 정적(static) 멤버 처럼 사용하기 위해 존재합니다. 개요 확장함수 JvmStatic은 주로 코틀린에서 사용합니다. 위의 결론을 풀어서 설명드리면 한 프로젝트안에 코틀린 파일과 자바 파일이 공존한다고 할 때, 자바 파일에서는 함수의 멤버에 접근하기 위해 함수에게 인자를 전달하는 과정이 필요합니다. 예를들어 자바에서 객체에 접근할때 일반적으로 아래와 같이 클래스에 접근해 객체의 인자를 가져옵니다. KotlinClass kotlinClass = new KotlinClass(); kotl..

[안드로이드] 웹뷰(WebView)(3) - 브라우저 캐시 사용하기
Android 2023. 9. 4. 11:20

안녕하세요. 이번 포스팅에서는 웹 자바스크립트에서 설정한 캐시를 사용하여 웹페이지를 로드하는 방법에 대해 알아보겠습니다. 실제로 안드로이드에서 캐시를 통한 웹 로드인지 네트워크를 통한 웹 로드인지 구분하는 메서드는 없는 것으로 알고있기 때문에 사용하는 방법에 대한 설명만 드리고 마무리하는 것으로 하겠습니다. 웹뷰에 대한 생성 및 제어에 관련된 포스팅은 아래에 있습니다. 2022.12.26 - [Android] - [안드로이드] 웹뷰(WebView)(1) - 앱 브라우저에서 호출 2023.01.03 - [Android] - [안드로이드] 웹뷰(WebView)(2) - 접근과 제어 개요 우리가 웹페이지를 브라우저에서 로드할때 리소스가 큰 이미지 파일이나 많은 양의 뷰를 불러오는 것은 페이지 로드시간의 지연에..