전체글 61

오늘 알게된 내게 부족한 기초 지식

•ListView 와 RecyclerView의 차이 각 아이템을 생성할때 바인딩을 계속 하는지 혹은 생성된 객체를 재활용 하는지 •액티비티 생명주기 당연히 create 한다음 start 바보같은 실수 하지말자 •동기와 비동기의 차이 (까먹지 말자 제발) 요청과 결과가 동시에 일어나는지 혹은 요청과 결과가 동시에 일어나지 않는지 (이건 강의시간에도 맨날 물어봤는데 왜 대답할때마다 멍청한 소리를하는지 제발 잊지말자) •set 과 map의 차이 set은 순서를 보장하지 않고 중복을 허용하지 않음 map은 순서를 보장하지 않지만 value의 중복은 허용 •원시 자료형과 참조 자료형의 차이 하나의 변수에 여러개를 담을수 있으면 참조 자료형 조금만 생각해보면 알수있는데 왜 생각못했을까

그 외 기술 2021.07.22

RESTful API

1. REST API 자원(Resource), 행위(Verb), 표현(Representations)로 구성 특징 •Uniform Interface 리소스에 대한 조작을 정해진 인터페이스로 수행 •Stateless 작업을 위한 상태정보를 따로 저장하지않음 단순히 요청을 처리하는 방식이기 때문에 구현이 단순해짐 •Cacheable HTTP 표준을 따르기때문에 캐싱 구현이 가능 (Last-Modified, E-tag) •Self-Discriptiveness API 메시지만 보고도 쉽게 이해할수있는 자체표현구조 •Client-Server 서버와 클라이언트별로 역할을 확실히 구분함으로써 서로의 의존성을 줄임 •계층형 구조 서버를 다중 계층 구조로 구성 디자인 가이드(중요) •URI는 정보의 자원을 표시해야 한다 ..

그 외 기술 2021.07.22

Firebase를 이용한 클라우드 메시징

어떡하면 사용자들이 내 앱을 잊지 않고 사용해줄까? 매일 반복적으로 사용하길 바란다면 역시 푸시 알림이 가장 효과적일 것이다 정해진 시간에 사용을 유도하는 메시지를 푸시 알림으로 받는다면 잊지 않고 사용해줄 것이다 그리고 안드로이드 스튜디오는 푸시 알림을 위한 강력한 툴을 제공한다 바로 Firebase Console을 통한 클라우드 메시징이다 먼저 manifest 파일에 인터넷 권한을 설정한다 앱 내부적으로 처리하는 것이 아닌 Firebase에서 알림을 뿌리는 것이기 때문이다 다음은 안드로이드 스튜디오 상단의 Tools에서 Firebase를 클릭한 후 열린 창에서 Cloud Messaging을 찾아 연다 1, 2단계는 툴에서 지시하는 대로 따른다 3단계부터가 좀 다른데 툴에서는 FirebaseInstan..

Android(Kotlin) 2021.06.18

ViewPager2의 프래그먼트에 접근하는 방법

viewpager2에 포함되는 프래그먼트들은 transaction 하는 것도 아니라서 findfragmentbytag로 참조할 수도 없다 하지만 검색해보면 나오는 스택오버플로의 글들은 viewPager를 기반으로 한 질문들뿐.. 근데 찾다보니 FragmentPagerAdapter에서는 getItem()으로 프래그먼트를 참조한다던데 ViewPager에서 ViewPager2로 이전 | Android 개발자 | Android Developers ViewPager에서 ViewPager2로 이전 | Android 개발자 | Android Developers ViewPager2는 ViewPager 라이브러리의 개선된 버전으로, 향상된 기능을 제공하며 ViewPager 사용 시 발생하는 일반적인 문제를 해결합니다. ..

Android(Kotlin) 2021.06.16

[절대 잊지말자] Activity에서 transaction된 Fragment에 접근할때

이걸 해결 못해서 프로그램 구조부터 뜯어고쳤었는데 결국 이걸 해결해야만 하는 문제에 부딪혀서 찾아봤다 다들 activity에서 fragment의 함수를 호출할 땐 fragmentManager의 findfragmentbyid 혹은 findfragmentbytag로 찾아야 한다는 건 알 것이다 하지만 내 경우처럼 위의 findfragment가 null을 반환해서 전혀 접근하지 못하는 사람들이 많았을 텐데 android - GetFragmentManager.findFragmentByTag() returns null - Stack Overflow GetFragmentManager.findFragmentByTag() returns null getFragmentManager().beginTransaction() ...

Android(Kotlin) 2021.06.16

ViewPager2 에 elevation이 적용 안될때

마무리 UI 작업 중 뷰 페이저에 elevation을 할당했는데 전혀 적용되질 않았다 할당된 뷰가 문제인가? 하고 애꿎은 자식 뷰의 background만 건들다가 ViewPager2 자체에 background 값을 전혀 할당하지 않은걸 발견... 대충 화이트 넣어보니 잘 되더라 ㅠㅠ 단, 뷰페이저 자체는 네모난 모양이기 때문에 모서리를 둥글게 하려면 drawable에서 둥근 모서리를 만든다음 넣어주도록 하자

Android(Kotlin) 2021.06.15

기기 자체 설정의 글씨 크기에 대응하는 레이아웃 짜기 - textView

앱 제작을 하면서 나름 열심히 검수했다고 생각했다 AVD로는 Pixel3, 실기기로는 Galaxy Note9를 사용하여 나름대로 레이아웃 구성을 잘 했다고 생각했다 기대에 부푼 마음에 엄마께 사용해보시라고 설치해드렸는데 이게 왠일? 레이아웃이 전체적으로 다 망가져있었다 알고 보니 핸드폰 자체 설정에서 글씨 크기를 크게 해 두시고 쓰시던 중이라 작은 글씨 크기에만 맞춘 내 앱은 당연히 레이아웃이 엉망진창이 된 것이었다. 그때부터 다른 유명 앱들을 보니 보이더라 텍스트는 한 줄에 하나씩, 각 레이아웃별로 충분히 떨어진 거리 다 글씨 크기나 화면 크기 조절에 대응할 수 있도록 만들어진 것이었다. 일단 처음으로 한건 텍스트뷰를 고치는 것이었다. 알고 보니 텍스트뷰에는 이미 충분히 좋은 기능이 있더라 바로 and..

Android(Kotlin) 2021.06.13

프래그먼트는 왜 parameter를 받으면 안되는걸까?

앱에 프래그먼트를 추가하다가 Unable to instantiate fragment 오류를 만났다 처음 보는 오류에 당황하다가 검색해서 나온 정답은 프래그먼트는 기본 생성자만 써야 한다고 하는 게 아닌가? 다시 말해 class TestFragment(something:Int):Fragment()로 프래그먼트를 만들고 val something = 1 val testFragment = TestFragment(something) 처럼 쓰는 게 불가능하다는 것 근데 막상 작성해보면 오류는 나지 않을 것이다 단순히 프래그먼트를 표시할 땐 parameter를 넘겨도 되는 듯하다(권장하진 않는다) 그럼 저 오류는 어디서 만나게 되는 걸까? 나의 경우는 MainActivity에서 생성만 해두고 사용하지 않은 프래그먼트..

Android(Kotlin) 2021.06.12