분류 전체 보기 1310

안드로이드 루퍼(looper)!? 쓰레드와 관포지교 관계

루퍼(looper) 지금까지 쓰레드끼리 Message객체를 만들어서 정보를 주고 받는다고 생각하면 잘못된 것입니다. 예제들을 보면 메인쓰레드만 Message객체를 받고 있음을 알 수 있습니다. 즉 메인쓰레드는 루퍼란 것을 가지고 있기때문에 메시지를 받을 수 있었습니다. 루퍼란놈은 메시지큐에서 메시지를 꺼내서 핸들러에 보내는 역할을 합니다(이전 소스보면 메인쓰레드 안에 Handler mHanler = new Handler()를 했음을 알 수 있습니다. 그렇다면 서브쓰레드에도 메시지를 받을 수 있게 할려면? 서브쓰레드에도 루퍼를 만들어주면 됩니다. static void prepare() : 현재 쓰레드를 위한 루퍼를 준비합니다 static void loop() 큐에서 메시지를 꺼내 핸들러로 전달하는 루프를 ..

안드로이드 쓰레드 4번째 메시지 풀을 이용하는 방법(obtain 메소드)

쓰레드 4번째 메시지 풀을 이용하는 방법 Message객체를 계속 만들면 메모리도 많이 소모하고 속도도 느려집니다. 그래서 안드로이드는 메시지풀이라는 것을 두었습니다. static Message obtain([Message orig]) 메시지풀에서 비슷한 메시지를 꺼내 사용하는것(일종의 new로 인스턴스 만드는 것랑 비슷함) static Message obtain(Handler h, int what, int arg1, int arg2. Object obj) void recycle() 사용한 메시지를 풀에 다시 집어 넣음 main.xml

디자인패턴 Command 패턴

Command 패턴 패키지 이름 해설 command Command 명령을 표현하는 인터페이스 MacroCommand 복수의 명령을 모은 명령을 표현하는 클래스 drawer DrawCommand 점 그리기 명령을 표현하는 클래스 Drawable 그리기 대상을 표현하는 인터페이스 DrawCanvas 그리기 대상을 구현하는 클래스 Anonymous Main 동작 테스트용 클래스 Command 패턴의 핵심은 명령을 시키는 사람과 명령을 구체적인 계획을 가지고 수행하는 사람을 분리시키는 것입니다. 문서열기나 복사하기나 취소하기 는 셋다 명령입니다. 그리고 명령을 수행시키는 사람은 따로 있습니다. 한번 어떻게 분리시켰는지 소스를 보고 실행해봅시다. Command 인터페이스 package command; public..

안드로이드 Context Menu를 만들어보자.

컨텍스트 메뉴 컨텍스트 메뉴란 뷰를 롱클릭했을때 나타나는 메뉴입니다. 이번에는 아이유 사진을 등록하고 아이유 사진을 누르면 메뉴가 뜨게 해보겠습니다. 기본적으로 컨텍스트 메뉴를 달고 싶으면 void Acitivity.registerForContextMenu(View view) 메소드를 사용해야되고 기본적인 메뉴 생성은 void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 에서 처리를 합니다. 그리고 컨텍스트 메뉴 아이템이 선택됬을 때는 boolean onContextItemSelected(MenuItem item) 에서 처리하면됩니다. 이때 오버라이딩 방법은 소스에서 오른쪽 클릭을 누르면 다음과 같이..

디자인패턴 Proxy 패턴

Proxy 패턴 이름 해설 Printer 이름있는 프린터를 나타내는 클래스(본인) Printable Printer와 PrinterProxy 공통의 인스턴스 PrinterProxy 이름있는 프린터를 나타내는 클래스(대리인) Main 동작 테스트용 클래스 Printable 인터페이스 package kch; public interface Printable { public abstract void setPrinterName(String name);//이름의 설정 public abstract String getPrinterName();//이름의 취득 public abstract void print(String string);//문자열 표시 } Printer 클래스 package kch; public class P..

안드로이드 Listener의 이해, 버튼을 누르면 Text가 바뀐다

이번에는 버튼이 눌리면 글자가 바뀌는 간단한 어플을 만들어봅시다. 이때 필요한 것은 리스너라는 것인데 리스너는 귀를 귀울이다라는 뜻으로 생각하면 됩니다. 자세한 건 소스에 있습니다. activity_main.xml MainActivity.java package com.example.fruit; import android.os.Bundle; import android.app.Activity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { @Ov..

반응형