Presentation is loading. Please wait.

Presentation is loading. Please wait.

모바일 자바 프로그래밍 MIDlet 프로그래밍 Pslab 오민경.

Similar presentations


Presentation on theme: "모바일 자바 프로그래밍 MIDlet 프로그래밍 Pslab 오민경."— Presentation transcript:

1 모바일 자바 프로그래밍 MIDlet 프로그래밍 Pslab 오민경

2 MIDlet 클래스 MIDlet은 이벤트 기반의 방식 사용 MIDlet 클래스
프로그래밍을 간편하게 하고, 코드를 줄이며, 명확한 Framework 제공. MIDlet 클래스 애플리케이션 관리자가 관계를 갖는 유일한 클래스. 애플리케이션 관리자는 이 클래스를 통해 MIDP 애플리케이션을 시작, 중지, 종료 시킨다. 애플리케이션 관리자가 필요로 하는 동작들을 미리 정의해둔 프레임 워크. 애플리케이션 개발 시, 이 MIDlet 클래스를 상속 받아서 사용.

3 MIDlet의 생명주기 이벤트 처리 주의!!! Start 이벤트 : startApp() 호출
Paused Destroyed Active MIDlet 시작 pauseApp() startApp() destroyApp() 이벤트 처리 Start 이벤트 : startApp() 호출 Pause 이벤트 : pauseApp() 호출 Destroy 이벤트 : destroyApp() 호출 주의!!! [종료] 버튼 : destroyApp() 호출 [Exit ] 버튼 : notifyDestroyed() 호출

4 리소스 파일 다루기 리소스는 JAR 파일내에 압축되어 있는 파일의 한가지 형태로 구성.
그러나 MIDP에는 파일 시스템이 정의되어 있지 않다. 따라서 Class 클래스의 getResourceAsStream을 사용한다. public InputStream getResourceAsStream(String name) 파라미터 : 리소스 파일의 경로와 이름. 리턴값 : 해당 리소스 파일의 내용을 얻을 수 있는 InputStream.

5 시스템 관련 클래스 java.lang 패키지의 System 클래스 java.lang 패키지의 Runtime 클래스
시스템 관련 정보를 제공하는 메소드를 가지고 있다. getProperty() 메소드 시스템과 관련된 정보를 애플리케이션이 알 수 있도록 제공되는 메소드 이 메소드를 통해서 특정 키에 대항하는 시스템의 속성을 얻을 수 있다. gc() 메소드 쓰레기 수집을 명시적으로 요청하여 수행하는 메소드 쓰레기 수집은 매우 부하가 큰 작업이므로 꼭 필요한 데서만 사용 exit() 메소드는 사용할 수 없다. 애플리케이션 고나리자가 미들릿을 실행하기 때문에 미들릿에서 직접 시스템을 종료시키는 것은 허용되지 않는다. 대신에 notifiedDestroyed 메소드를 사용하여 프로그램 종료 java.lang 패키지의 Runtime 클래스 메모리에 관련된 런타임 정보를 제공하는 메소드를 가지고 있다. getRuntime() 메소드 남은 메모리 양 등 런타임 정보를 제공하는 메소드

6 유틸리티 클래스들 MIDP 유틸리티 클래스들은 java.util 패키지에 포함되어 있다. 클래스 설 명 Calendar
설 명 Calendar 날짜 관련 연산을 제공하는 클래스 Date 특정 시간을 표현하기 위한 클래스 Enumeration 순차적인 원소 나열 형태의 객체에 접근하기 위한 인터페이스 Hashtable 한 쌍의 키와 데이터를 짝지어 다루기 위한 클래스 Random 임의의 무작위 정수 생성을 위한 클래스 Stack 데이터를 후입 선출에 따라 다루기 위한 클래스 Timer 스케줄에 따른 백그라운드 실행을 위한 클래스 TimerTask Timer에 의해 실행될 클래스의 인터페이스 정의를 위한 추상클래스 TimeZone 시간 출력 시 사용할 시간 구역을 표현하는 클래스 Vector 가변 길이 배열을 제공하는 클래스

7 작고 빠른 자바 프로그램 Object 타입 대신 될 수 있으면 기본형을 써라.
지역변수 : stack에 잡힘 Object 같이 new로 만들어진 변수 : heap에 잡힘 Heap에 잡히고, 해제되는 것이 적어야 빠른 프로그램을 만들 수 있다. Garbage Collector를 돕도록 안 쓰는 Object는 free시킨다. 자바 언어는 기본적으로 제공하는 automatic garbage collector가 있어서, 사용하지 않는 object는 자동으로 지워지게 된다. Object reference를 null로 만들어 주게 되면 금방 garbage collector에 의해 지워질 수가 있다. Exception은 될 수 있으면 줄인다. Exception은 기본적으로 Object이므로, Exception이 많으면 class file이 자동적으로 커지게 된다.

8 작고 빠른 자바 프로그램 (cont.) 될 수 있으면 local variable을 사용하자.
Local variable을 사용하지 않으면 그만큼 memory access가 많아지고 수행속도는 늦어진다. 될 수 있으면 String Concatenation을 피하라. String에 어떤 조작을 하려면 내부에서 자동적으로 StringBuffer을 만든다. 이는 시스템에 많은 부하를 가져온다. 따라서 무엇인가 String 을 조가하고 싶다면 반드시 StringBuffer로 만들어 사용한다.

9 ResourceExampleMIDlet
import java.io.*; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class ResourceExampleMIDlet extends MIDlet implements CommandListener { private Display display; private Form form; private Command exitCommand; public ResourceExampleMIDlet() { // 컴포넌트를 생성한다. form = new Form("ResourceExample"); // 텍스트 리소스 파일을 읽어들인다. StringBuffer strbuf = new StringBuffer(300); try { InputStream is = getClass().getResourceAsStream("/text/sample.txt"); InputStreamReader reader = new InputStreamReader(is); int ch; while ((ch=reader.read())>=0) { strbuf.append((char)ch); } reader.close();

10 ResourceExampleMIDlet(cont.)
} catch(IOException ex) { strbuf.setLength(0); } form.append(strbuf.toString()); // 이미지 리소스 파일을 읽어들인다. Image image = null; try { InputStream is = getClass().getResourceAsStream("/image/naver.png"); byte[] buf = new byte[50000]; // 최대 50KB int result = is.read(buf); if (result>0) { image = Image.createImage(buf, 0, result); is.close(); image = null; if (image!=null) form.append(image); // 좀 더 편리한 API 사용 image = Image.createImage("/image/hangame.png");

11 ResourceExampleMIDlet(cont.)
image = null; } if (image!=null) form.append(image); exitCommand = new Command("Exit", Command.SCREEN, 1); form.addCommand(exitCommand); form.setCommandListener(this); public void startApp() { display = Display.getDisplay(this); display.setCurrent(form); public void pauseApp() { public void destroyApp(boolean unconditional) { public void commandAction(Command c, Displayable s) { if (c == exitCommand) { destroyApp(false); notifyDestroyed();

12 ResourceExampleMIDlet(cont.)


Download ppt "모바일 자바 프로그래밍 MIDlet 프로그래밍 Pslab 오민경."

Similar presentations


Ads by Google