DataBinding, Binding 객체 생성나는 DatabindingUtil 클래스로 bindng 객체를 생성해서 사용하고 있었다. 하지만 다른 사람들이 작성한 databinding 코드들을 보면 여러 방법으로 binding 객체를 생성해주는 것을 보고 내가 제대로 쓰고 있는 것에 대한 의문이 들었다.inflate(), bind() 의 차이도 궁금하던 차였고 ..이러한 의문들을 해결하기 위해 대표적인 Activity, Fragment 에서의 사용법을 분석해보았다.ActivityActivityMainBinding.inflate(inflater: LayoutInflator)override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedI..
getLocationOnScreen vs getLocationInWindow()두 메소드 모두 뷰의 좌표값을 얻기 위해 종종 쓰는 메소드이다.둘의 차이를 비교하기 전에 Android Developers 에서의 정의를 살펴보자.public void getLoactionInWindow(int[] outLocation)@param outLocation int : 좌표를 보유할 두 정수 배열window 에서 view 의 좌표를 계산한다. 메소드가 리턴 된 후, 배열에는 x 밑 y 위치가 순서대로 포함된다.public void getLocationOnScreen(int[] outLocation)@param outLocation int : 좌표를 보유할 두 정수 배열screen 에서 view 의 좌표를 계산한다. ..
Architecture Components 사용 시의 5가지 일반적인 실수주의 : 이 글은 원문이 존재하는 글로, 본인은 그저 번역 / 의역한 것일뿐임을 알림.원문 : https://proandroiddev.com/5-common-mistakes-when-using-architecture-components-403e9899f4cb다소 심각한 결과를 초래하는 것들 - 만약 당신이 이러한 실수들을 저지르지 않더라도, 언젠가 같은 문제에 직면하는 것을 피하기 위해 명심할 가치가 있다. 이 글을 아래의 내용들을 설명한다.Leaking LiveData observers in FragmentsReloading data after every rotationLeaking ViewModelsExposing LiveDat..
Message.obtain() vs Handler.obtainMessage()Handler 에 대해 찾다가 Message 객체를 얻어오는 두 메소드를 알게 되었다.두 메소드의 차이를 보려고 Android Developers 문서를 보았는데 둘 다 Global Message Pool 의 인스턴스를 반환한다고 명시되어 있었다.무언가 다른 점이 있을것 같아 찾아본 내용들에 대해서 정리하고자 한다.Message.obtain()Android Developers 에서 찾아보면 이렇게 정의되어있다.obtainstatic fun obtain(): Message!Return a new Message instance from the global pool. Allows us to avoid allocating new obj..
Handler ( sendMessage, post ) / runOnUiThreadHandler ( sendMessage, post )runOnUiThreadReferences안드로이드에서 Thread 를 Main Thread 로 이관하는 작업 도중 문득 Handler ( sendMessage, post ) / runOnUiThread 의 차이점이 궁금해져서 찾아보았다.각각의 사용법에 대해서는 잘 정리해놓은 글들이 많이 있고 내용이 길어질 수 있으니 사용법 관련해서는 적지 않았다.Handler ( sendMessage, post )sendMessage()public final boolean sendMessage(Message msg) { return sendMessageDelayed(msg, 0); }Ha..
인터페이스 상수인터페이스 상수 ?인터페이스 상수는 Anti-PatternReferences인터페이스 상수 ?인터페이스 내에 선언된 변수는 무조건 public static final 로 선언 된다. class A { public static final int MON = 1; public static final int TUE = 2; public static final int WED = 3; }클래스 내의 상수 interface A { int MON = 1, TUE = 2, WED = 3; }인터페이스 내의 상수[ 출처 ] : https://codedragon.tistory.com/2526따라서 위의 두 코드는 완전히 동일한 의미이다.인페이스 상수는 Anti-Pattern처음 인터페이스 상수에 대해 검색을 ..
JNI (Java Native Interface)JNI ?Why JNI ?장/단점ReferencesJNI ?자바코드가 자바 VM 에서 동작할 때, 네이티브 언어로 작성된 코드를 자바에서 사용하거나, 네이티브 언어에서 자바의 클래스와 메소드를 사용할 수 있게 해주는 프로그래밍 인터페이스이다.네이티브원시 코드라는 의미로 C/C++ 또는 어셈블리어 이다.쉽게 말해 Java 와 다른 언어를 연동하는 솔루션이다.Java Side 는 SDK 로 개발할 어플리케이션 계층이며, C Side 는 NDK 를 이용하여 컴파일 할 라이브러리 계층이라고 보면된다.OpenCV 나 OpenGL 등의 라이브러리 등을 사용할 때 주로 사용된다.OpenCVComputer Vision Library, 영상처리 라이브러리이다. 컴퓨터가 알..
App is not indexable by Google Search 위 처럼 단순히 AndroidManifest.xml 의 intent-filter 에 ACTION_VIEW 만 추가해주면 해당 경고가 사라지지만,경고의 내용이 궁금하여 구글링 해보았다.이 경고는 앱에 딥 링크를 구성하기 위한 것이며, 사용자가 모바일 검색에서 웹/앱과 일치하는 특정 키워드를 검색하는 경우 앱 내에서 특정 Activity/View 를 열 수 있는 intent 와 직접 연결할 수 있다고 한다.딥 링크'특정 페이지에 도달할 수 있는 링크' 를 뜻한다.예로 웹 URL(http://blog.airbridge.io/deeplinkga-mweojyo/) 처럼, 모바일 어플리케이션에도 특정 페이지에 들어갈 수 있는 링크가 있다.모바일로 ..
ProguardProguard ?사용법ReferencesProguard ?ProGuard is a free Java class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes. It optimizes bytecode and removes unused instructions. It renames the remaining classes, fields, and methods using short meaningless names. Finally, it preverifies the processed code for Java 6 or hig..
do not concatenate text displayed with setText 1textView.setText("내용 " + content);cs 이와 같이 하드코딩된 문자열을 넣으면 해당 경고가 발생한다. 경고 내용은 다음과 같다. When calling TextView#setText:Never call Number#toString() to format numbers; it will not handle fraction separators and locale-specific digits properly. Consider using String#format with proper format specifications (%d or %f) instead.Do not pass a string literal..