전체 글 412

[Kotlin] 스코프 펑션(Scoepe Function)

스코프 펑션(Scoepe Function) 선택기준스콥펑션은 크게 두가지 기준으로 나눈다.Context Object를 참조하는 방법 (this, it)Return valuelet객체 결과값에 하나 이상의 함수를 호출하는 경우 사용긴 변수명 대신 it 으로 받을수 있다는 장점이 있음. 다만 이경우 run 이 더 좋을수 있음nullable 한 객체에 대해서 unpack 할수 있어 safety call 을 할수 있음runlet과 유사하나 this 로 받는다는 점이 다르다.this 로 받기때문에 context object 를 생략가능해서 간결해진다.let 과 마찬가지로 nullable 객체에 대한 safety call 할수 있다.withrun 처럼 this 로 받는다.run 처럼 safety call 할수 없어..

[Kotlin] 람다에 대해 알아보자(2)

5-3 지연 계산(lazy) 컬렉션 연산map,filter와 같은 컬렉션은 결과 컬렉션을 즉시(eagerly) 생성 시퀀스(sequence)를 사용하면 중간 임시 컬렉션을 사용하지않고도 컬렉션 연산을 연쇄WHAT?????/** * Returns a list containing only elements matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun Iterable.filter(predicate: (T) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list c..

[Kotlin] 람다에 대해 알아보자

람다 (Λ λ)11번째 그리스 알파벳 으로 대문자는 Λ, 소문자는 λ이다. 람다라고 읽으며 영어로는 lambda라고 적는다.프로그래밍 언어 에서 사용되는 개념으로, 익명 함수 Anonymous functions 를 지칭하는 용어이다.고차 함수함수를 인자로 받거나 결과로 반환하는 함수를 고차함수(高次函數)라 한다.람다식은 주로 고차 함수에 인자(argument)로 전달되거나 고차 함수가 돌려주는 결과값으로 쓰인다장점코드의 간결성 : 불필요한 루프문의 삭제가 가능하며, 동일한 함수를 재활용할 수 있는 여지가 커진다.인터페이스 없이 콜백구조를 간단하게 구현할 수 있다.지연 연산을 지원하는 방식 을 통하여 효율적인 퍼포먼스를 기대 → 5.3절5.1.1) 람다 소개// Java btn.setOnClickListe..

[Git] Push를 하고 PR요청 했을 때 파일 1개를 잘못 수정하였다.

string.xml에서 한개의 파일만 잘못된 소스로 푸시하고 PR을 요청하였다. ## 해결법 1. 푸시된 브랜치에서 백업브랜치를 생성 2. cherry pick으로 커밋된 내용들 가져온다. - 잘못된 커밋만 빼고 3. 나머지 커밋들은 그대로 커밋하고, 잘못된 커밋만 체리픽하면서 커밋되는 옵션 체크 풀고 수정한다. 4. 수정 후 다시 커밋 후 PUSH를 하는데 Force PUSH를 이용한다. force push는 소스트리-셋팅 - 어드밴스드 - Allow force push를 체크해야 푸시할때 나타남 Push to -> origin 클릭하면 force push 체크하는게 나온다. 결론 force push를 하게되면 이전에 PR날렸던것들도 같이 푸시가 수정되어 강제로 푸시하는듯 하다.

Git 2023.02.07

[Android] 통화관련 블루투스 Audio (Audio Control)

통화관련 블루투스 Audio 제대로된 방법이 아닐 수 있습니다 !! 통화 관련 SDK를 이용하고 있고, 블루투스를 이용하여 Audio Control을 해야 하는 상황. 참고로 OS 12이상에서는 BLUETOOTH_CONNECT 권한 필요(연결된 디바이스 가져오려면) 1. 휴대폰의 블루투스가 Enable / Disabled 되어있는지 확인하기 bluetoothAdapter = BluetoothAdapter.getDefaultAdapter() publishEnableBluetooth(bluetoothAdapter?.isEnabled == true) publishEnable함수는 EventBus를 통해 뷰쪽으로 값 전달 하는 함수. 2. 브로드 캐스트 액션 등록 - 블루투스 STATE값 가져오기. val in..

안드로이드 2023.01.06

[Android] 뷰페이저안에 웹뷰안에 뷰페이저

ViewPager안에 WebView안에 ViewPager 뷰페이저 안에 웹뷰 터치 중복 [액티비티 뷰페이저] 안에 [프래그먼트]들 안에 [웹뷰]안에 [배너 페이저]가 있는데 [액티비티 뷰페이저]와 [웹뷰 뷰페이저]가 터치가 중복되는 문제가 생김. ViewPager 내부, webView 가 있는 경우, inApp 에 swipe 아이템 이 있는 경우의 이벤트 처리 - onTouchEvent(ACTION_DOWN) 에서 viewPager 의 paging 을 비활성화 처리 - onOverScrolled (inApp에서 swipe 처리 하지 않는 경우 호출됨) 에서 paging 을 다시 활성화 처리 뷰페이저 컨트롤러 클래스 생성 public interface ViewPagerController { void set..

[Android] 갑자기 xml에 android 속성 자동완성이 안뜬다!

android:속성 자동완성이 안뜬다! 갑자기 xml에 android:id 자동완성이 안뜬다! 해결방법 1. Android Studio 업데이트가 있는지 보고 있으면 업데이트! 2. 해당 프로젝트의 숨김파일보기 2-1. .git, .github, .gitignore, .gradle, .idea 파일 복사 해둠. 2-2. 해당프로젝트명 파일이름 변경하고 2-3. 새로 git에서 받은뒤에, .git, .github, .gitignore 대치파일 함. 2-4. 프로젝트를 열어 gradle, idea를 새로 싱크맞춤. 나는 1번의 방법으로 해결되었다.! 참조 : 같은회사 kyle의 도움!

개발설정 2022.12.08

[Android] Fragment 에서 ActivityResultLauncher 사용시 앱 죽는 문제

ActivityResultLauncher 사용시 앱 죽는 문제 You must ensure the ActivityResultLauncher is registered before calling launch 가 발생하면서 앱이 죽는 이슈가 생겼다. # 상황 뷰페이저 - [홈], [죽는화면], [다른 화면], [다른 화면2] [죽는 화면]에서 첫 진입시 ActivityResultLauncher를 통해 가이드 화면으로 이동 시켜주어야 함. [다른화면2] -> [죽는화면]으로 이동시 앱 죽음. = 아마 [다른화면2] 갔을 때 [죽는화면]이 destroy되고 ActivityResultLauncher가 초기화 되지 않아서 죽는 것 같다. # 해결 onDestroy()에 ActivityResultLauncher 변수를..