[Animation] Frame & Tween Animation 구현 방법 1. Frame Animation : 여러 장의 이미지를 Frame 단위로 변경 2. Tween Animation : 이미지를 위치, 각도, 크기, 투명도 조절 Frame은 여러 장의 이미지로 인한 용량 Tween은 CPU를 많이 사용하나 세세한 조절이 부드럽게 가능 개인적으로는 큰 리소스의 이미지를 사용한다면 Frame도 CPU를 많이 사용하지 않을까 생각한다.
저장소에 저장 시 특정 파일 무시하기 저장소에 저장 시 특정 파일 무시하기 .gitignore 파일에 무시할 파일 패턴 작성 *.[oa] 빌드 시스템의 오브젝트와 아카이브 파일 ~ vi나 emacs의 임시 파일 입력하는 패턴 방법 #은 주석, 디렉토리는 끝에 /, !로 시작하는 패턴은 무시하지 않음, 정규식 사용 가능 # a comment - 이 줄은 무시한다. # 확장자가 .a인 파일 무시 *.a # 윗 줄에서 확장자가 .a인 파일은 무시하게 했지만 lib.a는 무시하지 않는다. !lib.a # 루트 디렉토리에 있는 TODO파일은 무시하고 subdir/TODO처럼 하위디렉토리에 있는 파일은 무시하지 않는다. /TODO # build/ 디렉토리에 있는 모든 파일은 무시한다. build/ # `doc/notes.txt`같은 파일은 무시하고 d..
Fastboot 명령어 Fastboot 명령어 fastboot flash 파티션 이름에는 bootloader, boot, zimage, ramdisk, system, userdata, cache, recovery 등이 올 수 있다. fastboot wait-for-devices 윈도우즈는 그냥 명령 주면 대기하므로 필요없다. 리눅스용에서 사용. fastboot [-w] flashall 윈도우즈에서는 "set ANDROID_PRODUCT_OUT=D:\out\target\product\crespo" 해두고 하면 된다. -w 옵션주면 userdata 등 파티션 날리고 모두 flash fastboot [-w] update update용 zip 파일(make updatepackage로 생성)로 업데이트, 역시 -w 옵션 주면 나머지 날..
WeakReference HashMap WeakReference HashMap 특정 Activity가 다른 Activity에게 Object를 전달할 때 사용 Object를 WeakReference에 넣구, Intent를 통해 Key 값을 Intent Extra 값을 전달 전달받은 Activity는 Key값으로 Object에 접근
Application Class Application Class Appcliation의 상태 정보를 유지할 때 사용. Activity와 Service는 getApplication()을 호출하여 접근 가능 Manifest에 정의되어 있다면 Android System에 의해 자동적으로 생성됨
Basic Thread for Application Basic Thread for Application 5 Threads Main HeapWorker Signal Catcher JDWP Binder Thread # Main Thread UI Thread 절대 Block되면 안됨 HeapWorker Dalvik 상에서 Garbage Collecting 작업 GC가 작업이 필요할 때, 깨움 Finalize API 호출 Signal Catcher Signal이 오면 받아서 처리 Ex) 시스템 오류 시 Dump 파일 생성 등 JDWP(Java Debug Wire Protocol) 디버깅 관련 역할 JVM과 Debugger 사이에 통신하기 위한 프로토콜 Binder 별도의 Process에서 요청들어오는 RPC 작업 수행
Handler Handler Message나 Runnable Object를 전달하는 역할 Message handleMessage() 메소드 호출 Runnable Object run() 메소드 호출 Message는 특정 Thread에 있는 MessageQueue에 쌓이고 나옴 Looper는 MessageQueue에 있는 Message를 꺼내 Handler에게 전달 Handler는 handleMessage를 통해 메세지 처리 Handler는 입구(외부 Thread인 MessageQueue)와 출구(UI Thread인 HandleMessage)를 가짐 기본 생성자 Handler handler = new Handler();를 생성하면 자동으로 new Handler()가 호출된 Thread의 MessageQueue와 Loope..
Memory issue Memory issue Garbage Collection 작업(100ms~ 200ms)에 의한 Application의 성능 문제 메모리 할당이 너무 많이 일어나는 경우(Layout 이나 View 등의 작업 시) GC는 해당 Application을 잠시 멈춘 뒤, 다른 객체들의 메모리를 반환하는 작업을 함 일반적일 때는 상관 없으나, 사용자가 스크롤이나 게임 상에서는 문제가 발생 해결 방법 Allocation Tracker SDK 내부에 있는 도구 Eclipse가 아닌 SDK의 Tool 폴더의 DDMS 실행 검증할 Application 프로세스를 선택하고 Allocation Tracker 탭을 클릭. Start Tracking 버튼 -> Get Allocation 하면 현재 메모리가 할당된 Objec들의 ..
Binder Driver Binder Driver Linux Kernel의 driver로 되어 있는 기존 IPC와 성질이 다른 IPC 기존 IPC : 데이터만 전달 Binder Driver : Object를 전달 가능 (Serialize 기술로도 전달 가능) Shared Memory를 통하여 프로세스 사이에 비동기 호출. 오버헤드가 적음 Binder를 통해서 넘기는 Data와 Object reference는 Parcel 클래스에 저장되어 전달 Parcel Class 고성능 IPC 전송이 가능하도록 설계되어 모든 객체에 대해서 Serialization하지 않음 즉 모든 Object가 Binder를 사용할 수는 없음
Android 개발 10 계명 Android 개발 10계명 1. Application 구성요소 간에 데이터를 주고 받을 때, Extra보다는 Parcelable를 사용하라 2. UI와 관련된 코드를 제외한 다른 코드는 UI Thread가 아닌 별개의 Thread에서 동작켜라. (ANR의 80% 이유) 3. Object Cache(Object Pool 패턴)를 적극 활용하라. 4. List Adapter 내부에 오랜 시간이 소요되는 연산을 수행하지 마라 5. setTag 메소드는 유용하다. Resource ID를 사용하는 장점을 살려라. (findViewById보다 SetTag와 ViewHolder 패턴을 사용) 6. Application 내부에서 메세지를 주고 받을 경우, Intent와 BroadcastReceiver를 활용하라 7...
Memory Memory Application은 최대 16MB의 Heap 공간을 사용할 수 있음 Memory Leak - Context에 대한 참조를 오랫동안 유지하는 것 Context와 관련됨 메모리 누스 방지 방법 Activity Context에 관한 참조는 Activity 생명 주기와 일치하게 함(onDestroy에서 참조 해제) Activity Context 대신 Application Context를 사용
Thread Thread UI Thread (Main thread) Application이 시작될 때 UI Thread 생성됨 시스템 or 사용자와의 상호작용으로 발생되는 모든 이벤트를 UI Toolkit 에게 전달 사용자 Touch -> UI thread -> Button Nomal(상태 변화) -> Button Pressed(상태 변화) -> UI thread -> Button의 onDraw() 오랜 시간이 걸리는 작업은 별도의 Thread에서 이루어져야 함 네트워크 작업 등의 작업을 할 때 화면이 멈춰 있음 안드로이 UI Tookit 요소(버튼, 체크 박스 등)은 Thread-safe 하지 않기 때문에 UI Thread에서만 변경되어야 함 방법들 Activity.runOnUiThread(Runnable) Vie..