분류 전체보기 (65) 썸네일형 리스트형 가비지 컬렉션 원리 http://itmining.tistory.com/24 [JAVA] Garbage Collection의 기초 이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 이전에 안드로이드 메모리 관리 관련하여 Strong, Soft, Weak Reference에 대해 알아보면서 GC에 대해 살짝 언급한 적이 있습니다. Java의 가비지 컬 itmining.tistory.com 위 링크가 가비지 컬렉션에 대한 정리가 잘 되어 있는 것같아서 가져왔습니다. 프로그래밍 언어 C에서는 메모리의 할당, 반환을 수동으로 합니다. 그러나 자바에서는 GC에 의해서 자동으로 수행되는데 그 과정에 대해서 설명하겠습니다. 1단계 : Making 프로세스는 마킹을 호출해서 참조되는 객체와 참조되지 않는 객체로 스캔합니다. 모.. AlertDialog Dialog 전체화면을 다 채우지 않고 일부 화면만 가리는 윈도우, 사용자가 예/ 아니오 같은 선택을 하거나 추가적인 정보 입력을 기다린다. 사용자가 응답하기 전까지는 화면에서 사라지지 않고 대기하며 프로그래밍 코드도 잠시 대기상태가 된다. AlertDialog의 구성요소 - Title 다이얼로그의 제목 - Content 사용자에게 보여줄 내용으로 문자열, 리스트, 커스텀 레이아웃이 가능 - Button Posivite Button , Negative Button, Neutral Button(Later 결정을 연기) AlertDialog를 생성하기 위해서 먼저 AlertDialog.Builder 객체를 생성하고 이 객체의 메소드를 호출해서 속성을 지정하고 생성한다. AlertDialog.Builder b.. [리팩토링] 분류코드를 클래스로 치환 분류코드를 int 같은 기본타입이라면 두가지 이유로 문제가 생긴다. 첫 번째로 분류 코드 범위 밖의 값이 사용되는 것이고 두번째로는 다른 분류 코드와 착각할 수 가 있ㄷ는 것이다. 타입이 판별되지 않거나 타입 세이프가 아닌 문제가 생긴다. 그런 문제를 해결하기 위해서 분류 코드를 클래스로 치환하는 리팩토링이 필요하다. 방법 1. 새로운 클래스를 작성해 기존 인터페이스(API)에서 사용 2. 새로운 인터페이스로 전환 3. 기존 인터페이스 삭제 결과적으로 장점으로는 분류 코드의 타입 판별이 가능해지고 단점으로는 클래스 개수가 늘어나는 것이다. public class Item { public static final int TYPECODE_BOOK = 0; public static final int TYPECO.. 연결리스트(linked list) 연결리스트는 차례로 연결된 노드를 표현해주는 자료구조이다. 단방향 연결리스트에서 각 노드는 다음 노드를 가리킨다. java로 구현한 간단한 linked List class Node { Node next = null; int data; public Node(int d) { data = d; } void appendToTail(int d) { Node end = new Node(d); Node n = this; while (n.next != null) { n = n.next; } n.next = end; } } c로 구현한 연결리스트 typdef struct Node { int data; struct Node* next; // 다음 노드의 주소를 저장할 포인터 }Node; 아스키코드와 유니코드 아스키(ASCII) American Standard Code for Information Interchage 아스키코드는 7비트, 128개의 고유한 값만 사용한다. 통신 에러 검출을 위해 사용하기 때문이다. 유니코드 아스키코드에 모든 언어를 담을 수 없어서 용량을 확장한 유니코드가 등장한다. 처음에는 65536개, 2byte (2의 16승) 으로 표현했다. 트라이란? 트라이(Trie)란? 문자열에 특화된 자료 구조인 트라이(Trie)는 문자열 집합을 표현하는 자료구조이며, 원하는 원소를 찾는 작업을 O(n)에 해결할 수 잇는 자료구조이다. 트라이의 단점 공간 복잡도가 치명적인 단점이다. O(포인터의크기 * 포인터 배열 개수 * 트라이에 존재하는 총 노드 수) public class TrieNode { private Map childNodes = new HashMap(); private boolean isLast; Map getChildNodes() { return this.childNodes; } boolean isLast() { return isLast; } void setisLast(boolean isLast) { this.isLast = isLast; } } p.. 코틀린 Contracts 코틀린 Contracts 기능은 코틀린 1.3에서 소개된 기능입니다. 컴파일러를 돕는 역할로 실험적인 기능입니다. Initailizing in Lambdas fun calledOneTimeOnly(run: () -> Unit) { // do something } fun initValue() { val intValue: Int calledOneTimeOnly { // Does not compile: // Captured values initialization is forbidden due to possible reassignment. intValue = 1 } } [https://pspdfkit.com/blog/2018/kotlin-contracts/] 위 코드에 보면 function이 한번만 호출되는 것.. 안드로이드 접근성 accessibility 에 관하여 요즘 앱개발을 하면서 접근성 이슈가 많이와서 한번 정리해둘까 싶어서 작성하는 포스팅입니다. 간단하게는 view에 contentDescription 속성을 넣어서 포커싱 되었을때 어떻게 읽어줄 지를 정해 줄 수 있습니다. 또한, importantForAccessibility="no" 를 설정하여 필요없는 정보를 읽어주는 것을 예방할 수 있죠. 이런 포커스 관리하는 방법 중 일부로 View setAccessibilityTraversalAfter/Before 를 이용하는 방법이 있다고 합니다. AccessibilityDelegate() 뷰에 대한 접근성을 커스터마이징하고 싶다면 AccessibilityDelegate()를 오버라이딩하여 설정할 수 있습니다. 몇 가지 메소드에 대해서 알아봅시다. - sendAc.. 이전 1 2 3 4 5 6 7 8 9 다음