안드로이드 192

RecyclerView setHasFixedSize

리사이클러뷰에 새로운 아이템이 삽입되거나, 기존의 아이템이 제거될 때 호출되는 메소드를 매우 함축하여 간결히 표현한 코드이다. void onItemsInsertedOrRemoved() { if (hasFixedSize) layoutChildren(); else requestLayout(); } 코드를 보면 hasFixedSize 가 true 인 경우 layoutChildren() 을 호출하고, 만약 false 라면 requestLayout() 을 호출하게 된다. requestLayout() View 의 색깔 및 모양이 아닌 크기가 변화할 때 requestLayout() 을 호출하여 다시 ViewGroup 에 속한 뷰들의 크기 측정부터, 자신의 크기 측정까지 일일히 수행한다고 했다. 결론 우리는 setHa..

안드로이드 2022.03.29

안드로이드 APK 아무나 삭제 못하도록 하는 adb 명령어

삭제 못 하도록 설정하기 adb shell dpm set-device-owner {패키지명}/.AdminReceiver 삭제 다시 할 수 있도록 권한 풀기 adb shell dpm remove-active-admin {패키지명}/.AdminReceiver .AdminReceiver는 안드로이드 기기관리자 검색하면 됩니다 https://n00bh4cker.tistory.com/108 안드로이드 기기관리자 사용하기 1. 메니페스트 설정하기 리시버를 만들고 권한에 BIND_DEVICE_ADMIN을 허용해주어야한다 메타데이터도 선택이 아닌 필수!! 인텐트 필터를 만들고 안에 액션으로 DEVICE_ADMIN_ENABLED 속성을 주어야 한다 2. n00bh4cker.tistory.com

안드로이드 2022.03.28

Android Adb(Android Debug Bridge) Path 설정(MAC)

터미널에서 adb 명령어를 사용해도 -bash: adb: command not found 만 발생 하였다 MAC에서 사용하려면 PATH 를 지정 해줘야 하는것 같다. bash 쉘에서 사용자의 환경설정을 저장하는 .bash_profile 파일이 있는지 체크 ls -l -a .bash_profile .bash_profile이 없다면 새로 생성 touch -c .bash_profile .bash_profile 수정 open -e .bash_profile export문을 .bash_profile에 추가 (username에 자기의 폴더명으로) export PATH=$PATH:/Users/username/Library/Android/sdk/platform-tools/ bash_profile 실행 source .ba..

안드로이드 2022.03.28

Android WebView (React 서비스 화면과 통신)

웹뷰 작업을 하던 도중에 React로 작업된 화면과 통신하는데 브릿지를 이용해서 웹 -> 안드로이드는 호출이 되었지만 안드로이드 -> 웹 (자바스크립트 loadUrl)이 호출이 되지 않았다. webview.evaluateJavascript를 통해 호출이 되었다. 실제 테스트 함수명 : AndroidBridge 안드로이드에서 실제 호출 출처 : https://junhyunny.github.io/react/android/react-android-webview-communication/

안드로이드 2022.03.21

LiveData 데이터가 100% 들어오지 않을 때

코딩을 하던 도중 Test Code를 짯고 LiveData를 이용해서 데이터 Update를 시켜주는 작업을 하고 있었다. 하지만, 리스트를 가져오는 두개의 함수에서 하나의 결과만 Update가 되었다. 1) Observer가 Active하지 않은 경우 Observer 클래스로 표현되는 관찰자의 수명 주기가 STARTED 또는 RESUMED 상태이면 LiveData는 관찰자를 활성 상태로 간주합니다. LiveData는 활성 관찰자에게만 업데이트 정보를 알립니다. LiveData 객체를 보기 위해 등록된 비활성 관찰자는 변경사항에 관한 알림을 받지 않습니다. '활성 상태'가 아닌 observer는 LiveData의 값 변경을 인식할 수 없다는 것이다. 활동이나 프래그먼트에 활성 상태가 되는 즉시 표시할 수 ..

안드로이드 2022.03.16

RecyclerView 데이터바인딩 + ItemTouchHelper시 데이터 중복문제

문제 : 작업은 ViewHolder에 데이터 바인딩이 적용 되어있다. 결론은 맨 밑에 있습니다! (삽질 공유) RecyclerView에 ItemTouchHelper를 달아서 리스트 순서를 변경 하는 작업이 있다. 리스트 순서 변경시 스크롤이 빠르게 이동될 때 TextView의 Title이 중복 되어 보여졌다. 우선, ItemTouchHelper쪽에 로그를 다 찍어보았다. (봐도 잘 모르겠음..) ViewHolder쪽에 bind호출 부분 title을 로그 찍어보았지만 제대로 나오는것 같다. 고민하다가 데이터 바인딩 되어있는 부분을 ViewHolder소스에 textView.setText(title) 해보니 데이터 중복이 되지 않았다. 고민 : 그렇다면 소스에 setTextView하는 것과 데이터 바인딩 으로..

안드로이드 2022.02.23

android-string-reference plug-in

멀티 PRODUCT 를 제공 하기 위해 리소스 (앱 이름, etc..) 분리를 위해 방법을 검토한 것중, android-string-reference plug-in 을 적용한 내용입니다. strings-template_ref.xml 추가 IED 에서는 template_ 가 없는 (빌드시 생성될 ID) 를 참조 하기 때문에, 대상 ID 가 없다는 오류가 노출 됩니다. 단점으로, template_ 의 리소스를 생성할때, strings_template_ref.xml 에 참초 하는 ID 를 추가 해야 하는 번거로움이 있다고 합니다. 현재는 라이브러리 버전이 업데이트가 되어 리소스에 파라미터만 쓰면 된다고 함! 이 자료는 제가 정리한게 아니고 같이 일하는 팀원이 정리해주어 나중에 유용하게 쓰일것 같아 옮겨 적었습..