본문 바로가기

안드로이드

[Android] Dalvik & ART 1. Compiler vs Interpreter Compiler 언어(대표적으로 C, C++ 등) Runtime 전에 미리 하드웨어 플랫폼 별로 적합한 Machine Code로 해석해 두었다고, Runtime시 별도 처리 없이 실행 Interpreter 언어(대표적으로 Script 언어) Runtime에 해석과 실행을 동시에 한다. Compiler 언어는 빠른 실행 속도라는 이점을 얻는 대신, Machine Code의 플랫폼 종속성과 디스크 공간 활용이 단점이자 비용이 된다. Interpreter 언어는 플랫폼 종속성은 없지만, Runtime시 빈번한 인터프리팅이 일어나기 떄문에 상대적으로 실행 속도는 느린 편이며, 스크립트 언어들이 여기에 속한다. Java는 Runtime 전에 바이트 코드로 컴파일하는.. 더보기
[안드로이드 프로그래밍 Next Step] Chapter 8. Broadcast Receiver Chapter 8. Broadcast Receiver Broadcast Receiver는 Observer Pattern을 안드로이드에서 구현한 방식이다. Observer Pattern에서는 일대다 관계에서 직접 호출하지 않고, 인터페이스를 통한 느슨한 결합을 통해 옵저버를 register/unregister하는 방법을 제공한다. 이 방식은 BroadcastReceiver에서도 마찬가지이다. BroadcastReceiver는 바로 Observer이고, 이벤트는 sendBroadcast()에 전달되는 Intent이다. Context에는 registerReceiver()와 unregisterReceiver() 메서드가 있는데, 여러 컴포넌트(Activity, Service, Application)에서 사용될 .. 더보기
[안드로이드 프로그래밍 Next Step] Chapter 5. Activity Chapter 5. Activity Activity는 앱에서 화면의 기본 단위가 되고 가장 많이 쓰이는 컴포넌트이다. Activity는 필요한 만큼만 유지 Activity는 다른 컴포넌트와 마찬가지로 AndroidManifest.xml에 쉽게 선언할 수 있지만 Activity 개수가 많아지면 유지하기도 어려우므로, 불필요하게 많이 만들지 말 것을 권장한다. 내부에 UI 액션이 많고 로직이 많다면 우선 액티비티를 고려하고, 다른 액티비티 위에 팝업 형식으로 뜬다면 custom layout dialog나 DialogFragment, PopupWindow로 대체하는 것이 좋다.'로딩 중'이라고 전체를 덮는 반투명 화면은 어떤게 좋을까?이것도 Activity보다는 DialogFragment가 적절하다.독립적인 .. 더보기
[안드로이드 프로그래밍 Next Step] Chapter 3. Background Thread Chapter 3. Background Thread Background Thread를 활용하면 앱의 성능을 향상하는데 많은 도움이 된다. HandlerThread 클래스 HandlerThread(Handler는 가지고 있지 않음)는 Thread를 상속하고, 내부에서 Looper.prepare()와 Looper.loop()를 실행하는 Loop Thread이다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011.. 더보기
[안드로이드 프로그래밍 Next Step] Chapter 1. 안드로이드 프레임 워크 Chapter 1. 안드로이드 프레임 워크 안드로이드 아키텍처의 소프트웨어 스택을 살펴보고, 프레임워크 소스 활용 방안과 안드로이드 버전에 따른 이슈를 알아봄. Android Architecture 출처 : 플랫폼 아키텍처 | Android Developers Application 안드로이드에서 제공하는 선탑재 기본 앱(홈, 카메라, 전화, 브라우저 등)과 다운로드해서 설치하는 일반 앱은 애플리케이션 스택에 있다. 애플리케이션은 애플리케이션 프레임워크 스택 위에서 동작한다. 선탑재된 기본 앱은 시스템 권한을 사용할 수 있고, 프로세스 우선순위를 높일 수 있다. 프로세스 우선 순위는 단말에 메모리가 부족한 상황에서 시스템에서 강제로 종료시키는 프로세스를 정하는 기준이다. Application Framewo.. 더보기
[Android] Window What is Window? 하나의 뷰 계층을 가진 직사각형 영역, 하단의 직사각형들이 각각의 윈도우 영역 What are Characteristics of Window? 1. Activity에 의해 생성됨 2. WindowManager에 의해 관리됨. 3. 각각의 Activity는 User Interface를 그릴 수 있는 하나의 윈도우가 주어짐 4. Window의 Contents를 그릴 수 있는 하나의 Surface를 가짐 5. Surface는 view들을 가지고 있는 ViewGroup을 포함한다. How interaction happens among the Window, Surface, Canvas, and Bitmap? 1. Suface는 lock이 되어있어서, 그 안에 그릴 수 있는 Canvas.. 더보기
[Android] Input Event 이벤트 리스너(EventListener) void onClick( ) From View.OnClickListener 사용자가 항목을 터치하거나, navigation key 또는 트랙볼을 사용하여 해당 항목에 포커스를 맞추고 ‘Enter’키를 누르거나 트랙볼을 클릭하면 호출 1. 변수로 리스너 등록 // Create an anonymous implementation of OnClickListener private OnClickListener mCorkyListener = new OnClickListener() { public void onClick(View v) { // do something when the button is clicked } }; protected void onCreate(Bundle .. 더보기
[Android] View View Android의 UI는 ViewGroup과 View의 계층으로 이루어짐 출처 : Good Joon :: 안드로이드 개발 #4 - 첫 UI 개발 View란? Activity에서 화면을 구성하는 최소 단위(Widget들의 기본 Class) 로 화면에 보이는 모든 것 View를 상속하는 Class 예 : TextView ImageView, EditText, Button 등 ViewGruop n개의 View를 담을 수 있는 Container로 ViewGroup 또한 View를 상속받아 만든 Class입니다. ViewGroup를 상속하는 Class 예 : TextView ImageView, EditText, Button 등 출처: Android UI Layouts Tutorial View LifeCycl.. 더보기
[Android] java.lang.IllegalMonitorStateException: object not locked by thread before notify() [Android] java.lang.IllegalMonitorStateException: object not locked by thread before notify()Problem: lock을 걸지 않았을 때 발생하는 에러(wait도 마찬가지로 발생) java.lang.RuntimeException: Unable to start activity ComponentInfo{kr.co.foodfly.viewtest/kr.co.foodfly.viewtest.BlogActivity}: java.lang.IllegalMonitorStateException: object not locked by thread before notify() at android.app.ActivityThread.performLaunchAc.. 더보기
[Android] Dependency Structure [Android] dependency 구조 보기Requireapk-dependency-graph(https://github.com/alexzaitsev/apk-dependency-graph)apk fileant 1.9.9 or newerat least Java 5 Intstall & Run (For Mac) hyogeun.park@xxxxxxxxxxxxx:~$ xcode-select --installhyogeun.park@xxxxxxxxxxxxx:~$ brew updatehyogeun.park@xxxxxxxxxxxxx:~$ brew install ant// move apk-dependency-graph directoryhyogeun.park@xxxxxxxxxxxxx:~$ anthyogeun.park@xx.. 더보기