본문 바로가기

안드로이드

웹뷰 관련 토막상식 웹뷰는 이상하게 양질의 자료를 찾기 힘들다.그래서 회사에서 맨날 두들겨 맞으면서 배우게됨 뭐하나 배울때마다 정리할곳이 필요한데 이곳은 웹뷰 관련 토막 상식을 정리하려 한다.오늘 기존에 알고있던 문제인데 그거가지고 4시간동안 뻘짓해서 만드는거 아님 1. 웹뷰 브릿지에서 작업치면 비동기로 동작한다.브릿지에다가 함수 담아서 실행시킬때 따로 쓰레드 처리 안하면 백그라운드 스레드에서 돈다.즉 뭐 setText같은거 해주면 문제가 생긴다는 뜻이다.근데 웃긴게 차라리 터지면 좋은데 노란색으로 에러관련 로그만 뜨고 동작을 안한다.그래서 로그 안보면 대체 왜이래? 이러면서 구천을 떠돌게 된다.또한 웹뷰 관련된거 디버깅 걸어놔도 main 쓰레드에서 도는게 아니니 ANR이 걸리지 않는다.웹뷰는 ANR면역이라고 봐도되지만 면.. 더보기
안드로이드 권한 관련 이야기 "이거 나만 몰랐어?" 1편이다. 1편의 주제는 바로바로 권한최근 권한은 나와 연이 깊다. 트립드로우 때도 지도, 위치최근 동네산책에서도 지도, 위치. 아주 그냥 위치권한만 하루종일 유저한테 물어보고있다. 어쨋든 이러한 권한을 요구하면서 얻은 팁? 혹은 정보에 대해 공유해보려한다. 1. 사용자가 권한이 있는 상태에서 권한을 제거하면 프로세스가 종료됨(앱이꺼짐)오류처리를 하다보면 기획자분이 사용자가 위치권한을 꺼버렸을때 상황을 상정해서 이런저런 처리를 요구한다. 그러면 아마 우리의 생각은 이렇게 미칠것이다. 1. 설정을 갖다와야 권한을 끄니까 사용자가 설정 나갔다오겠네2. 그럼 onResume에다가 권한 체크 로직을 넣고 권한없을때 상황을 상정해서 처리해볼까? 이렇게 꾸역꾸역 작업을 하는데 이 노력은 결실.. 더보기
이거 나만 몰랐어? 돌잔치 한줄 요약: 앞으로 안드로이드 관련된 짧은 숏폼의 글을 쓸거다. 나는야  완벽한 숏폼 인재요즘 회사에 취업하니 공수에 쫓겨 뭘 딥하게 파기도 힘들고 근데 그 와중에 스쳐지나가는 중요한 지식이나 시점들은 참 많다. 그런 정보들이 하나하나 기회인데 놓치는게 아쉽기도 하고 뭔가 요즘들어 실력이 반감하는것 같기도해서 아쉽다. 행운의 여신은 뒷머리가 없어서 앞쪽에서 잡아야한다고 한다.그래서 앞머리를 야무지게 잡기위해 짧은글을 써보기로 마음먹었다. 여태까지의 글들은 항상 길었지만 앞으로는 업무중 얻었던 중요한 지식들을 짧게 적어보려한다. 그렇게 등장한 "이거 나만 몰랐어?" 일하다보면 경력분들은 뭐라고 부와아아앙 하면서 외우고 있는게 참 많다.그래서 흐음 이걸 나만 몰랐나? 싶을때가 종종있다. 그런 정보들을 하나하.. 더보기
내부 저장소 외부 저장소 간단정리 회사에서 짬나서 글을 오랫만에 쓸수 있게 되었다. 사실 별 내용은 아니지만 가끔 쓸일이 있을때마다 아른아른한 내부저장소 외부 저장소에 대해 사용에 꼭 필요한 내용만 글로 정리해보려한다. 뭐 리마인드 용이니까 자세한 내용은 구글링이 필요할것이다. 직면한 상황- 캡쳐한 이미지를 액티비티간 전달해야하는 상황이 생김- Intent 를 통한 데이터 전달은 1MB 용량제한이라는데 사실상 이것보다도 작음(간당간당하게 맞추면 CS로 혼나는 날 볼수 있음)- 즉 Intent로 이미지 전달은 애매함 + 이미지를 메모리에 올려놓는것도 부담스러움(여러장이면 메모리를 얼마나 먹는겨)- 결론: 저장했다가 빼와야겠네 어디다 저장하지?  내부 저장소 VS 외부저장소내부 저장소 외부 저장소의 차이: 어플리케이션의 소유권 여부에 따라서.. 더보기
일하며 배운 신기한 토막상식 정리 1. as 캐스팅할때 as? 는 안전한 캐스팅이다.as 캐스팅할때 as? 를 사용하면 캐스팅이 안될때 클래스 캐스트 익셉션이 아니라 null을 줘버린다.-> 안전하게 코딩하기 좋음 2. callbackflow플로우 잘 안쓰다보니 공부하다가도 잊어버리는데 그냥 플로우 공식문서 읽었을때 안나왔던것 같다.콜백을 코루틴 싱글샷으로 바꾸는 suspendCancellableCoroutine 처럼 콜백을 flow로 바꾸는거다 사용법은 인터넷에 많이 나와있고 흐음 예시코드는 내 비밀 일기장에 적어야지 흐흐흐흐 3.firstNotNullOfOrNull어레이에 붙어있는 확장함수인데 함수 블록 입력해주는게 null을 return 하지않는 첫번째 요소를 반환한다.만약 다 null이라면 null 반환 as? 와 궁합이 잘맞는다.. 더보기
멧돼지 개발신조 우리의 결의!!! 뭐 항상 그렇지만 나는 내가 나중에 보려고 글을 쓴다. 하지만 이번 글이야 말로 정보 전달의 목적이 1도 없다.어떻게 보면 당연한 소리를 계속 외치는 것처럼 보일수도 있고 어쨋든 개발하면서 내가 나한테 하는 이야기를 적어보려한다. 요즘 진짜 타인이 작성 해놓은 오래된 레거시 코드를 보며 “이렇게 짜면 남이 알아듣기 힘들구나” 라는 교훈을 절실히 얻고있다.물론 그 코드를 비판하기에는 그 코드를 작성한 분들도 눈물겨운 사연이 분명 있을것이 분명하다…….(갑자기 너무 슬픔) 나 또한 옛날에 공부 했던 내용을 찾아보려 우테코 때 열심히 만들었던 옛날 레포들 뒤적뒤적 하다보면 하루종일 앉아서 고민만 했는데 왜 이따구로 짰지?? 라는 생각이 10초에 한번꼴로 든다.그만큼 진짜 뭔짓을 해도 실수는 하기 .. 더보기
웹뷰 기초 가이드 웹뷰란? 웹뷰란 네이티브 앱에 속한 일종의 브라우저 이다. 하지만 브라우저라면 주소창, 새로고침, 즐겨찾기 등 다양한 웹을 탐색하기 위한 도구를 제공하겠지만 웹뷰는 그렇지 않다. 웹뷰의 경우 앱처럼 웹의 화면을 앱에 띄워줄뿐 따로 앱을 탐색하기 위한 도구나 기능을 제공하지 않는다. 이를 통해 웹을 앱처럼 사용하도록 만드는것이다. 웹뷰의 장점 여러 플렛폼에서 사용 가능하다. 웹개발자를 한번 갈아버려서 IOS, ANDROID에서 동시에 사용할 수 있다. -> 이를 통해 초기 개발 비용을 최소화 할 수 있고 유지보수성을 늘릴 수 있다. 비지니스 관점에서 개꿀 갈리는 웹개발자 == 눈물, 일자리 없어지는 안드,아요 개발자도 눈물 배포 없이 업데이트 가능하다. 이게 꿀기능이지 않을까 싶은데 잦은 변화가 필요한 경.. 더보기
컴포즈 스터디 2차 구성 가능한 함수 구성 가능한 함수 들어가기에 앞서 동영상 진짜 번역부터 열받아죽겠다 그냥 글로 만들어줬으면 좋겠다. Composable 기본적인 컴포저블 함수에대해서 설명한다. 이건 앞에서 다뤘으니 생략 희안하게 초반부에 리사이클러뷰를 대체하는 lazyColumn 같은게 아닌 그냥 forEach를 통해서 리사이클러뷰 같이 리스트를 구성하는것을 보여준다. 컴포저블 함수는 불변값이기 떄문에 이렇게 변수를 담고 해봐야 상태값을 변경하고 이럴수 없다. 그런 개념이 아니다 애초에 내부에서 이렇게 분기를 쳐서 empty View 혹은 visibility 처리를 할수도 있는것이다. (visibility 속성을 건드는게 아니라 그냥 표시자체를 안해버림) 또한 당장 왜인지는 설명안하는데 컴포저블 함수내에서 전역변수를 수정하면 안된다고 .. 더보기