Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MobileJavaStudy/Tip: Difference between revisions

From ZeroWiki
imported>Unknown
No edit summary
 
(Repair batch-0002 pages from live compare)
 
Line 39: Line 39:
이 두개를 안하면 핸드폰이 뻗는 수가 있다고 함. 뻗게 하는 프로그램이라면 머 전혀 안해도 무방하겠군..;; --[[창섭]]
이 두개를 안하면 핸드폰이 뻗는 수가 있다고 함. 뻗게 하는 프로그램이라면 머 전혀 안해도 무방하겠군..;; --[[창섭]]
== destoryApp 메소드의 unconditional에 대하여... ==
== destoryApp 메소드의 unconditional에 대하여... ==
~cpp destoryApp
<code>destoryApp</code>
메소드에는 {{{~cpp unconditional}}} 이라는 {{{~cpp boolean}}} 값이 있다. {{{~cpp MIDlet}}}이 더 이상 필요하지 않거나 종료되어야 할 때 {{{~cpp DestoryApp}}} 메소드가 호출되고 {{{~cpp MIDlet}}}{{{~cpp Destroyed}}} 상태로 들어가게 되는데, 만약 {{{~cpp MIDlet}}}이 중요한 과정을 수행중이라면 {{{~cpp MIDletStateChangeException}}}을 발생시켜 그 과정이 끝날때까지 {{{~cpp Destroyed}}} 상태로 가는 것을 막을 수 있다. 하지만 이런 요청도 상황에 따라 받아들여지지 않을 수 있는데, {{{~cpp unconditional}}} 이라는 값이 그 상황을 알려준다. {{{~cpp unconditional}}}{{{~cpp true}}} 인 경우에는
메소드에는 <code>unconditional</code> 이라는 <code>boolean</code> 값이 있다. <code>MIDlet</code>이 더 이상 필요하지 않거나 종료되어야 할 때 <code>DestoryApp</code> 메소드가 호출되고 <code>MIDlet</code><code>Destroyed</code> 상태로 들어가게 되는데, 만약 <code>MIDlet</code>이 중요한 과정을 수행중이라면 <code>MIDletStateChangeException</code>을 발생시켜 그 과정이 끝날때까지 <code>Destroyed</code> 상태로 가는 것을 막을 수 있다. 하지만 이런 요청도 상황에 따라 받아들여지지 않을 수 있는데, <code>unconditional</code> 이라는 값이 그 상황을 알려준다. <code>unconditional</code><code>true</code> 인 경우에는
~cpp MIDletStateChangeException
<code>MIDletStateChangeException</code>
을 발생해도 무시되는 상황이고, {{{~cpp false}}} 인 경우에는 {{{~cpp MIDletStateChangeException}}}을 발생하면 {{{~cpp Destroyed}}} 상태로 가는 것을 잠시 막을 수 있다.
을 발생해도 무시되는 상황이고, <code>false</code> 인 경우에는 <code>MIDletStateChangeException</code>을 발생하면 <code>Destroyed</code> 상태로 가는 것을 잠시 막을 수 있다.


그러므로  
그러므로  
~cpp destroyApp
<code>destroyApp</code>
메소드를 만들 때 {{{~cpp MIDletStateChangeException}}}을 사용해야 하게 된다면 {{{~cpp unconditional}}} 값에 따라 이 값이 {{{~cpp false}}}인 경우에만 {{{~cpp MIDletStatChangeException}}}을 사용하고 {{{~cpp true}}}인 경우는 무조건 {{{~cpp Destroyed}}} 상태로 가야하는 상황이므로 그 상황에 맞게 처리해 주면 된다.
메소드를 만들 때 <code>MIDletStateChangeException</code>을 사용해야 하게 된다면 <code>unconditional</code> 값에 따라 이 값이 <code>false</code>인 경우에만 <code>MIDletStatChangeException</code>을 사용하고 <code>true</code>인 경우는 무조건 <code>Destroyed</code> 상태로 가야하는 상황이므로 그 상황에 맞게 처리해 주면 된다.
----
----
[[MobileJavaStudy]]
[[MobileJavaStudy]]

Latest revision as of 00:16, 27 March 2026

J2ME로 프로그래밍 할 때 도움이 될만한 팁들.



일반적인 프로그램 템플릿

import javax.microedition.midlet.MIDlet;

public class className extends MIDlet {
	public className() {
	}
	
	public void startApp() {
	}
	
	public void pauseApp() {
	}
	
	public void destroyApp(boolean unconditional) {
	}
}

파일 입력

InputStream is = this.getClass().getResourceAsStream("readme.txt");
	try {
		if ( is != null) {
			int ch;
			while ((ch = is.read()) != -1) {
				System.out.print((char) ch);
			}
			is.close();
		}
	}
	catch (IOException e) {
		System.out.println(e);
	}
}

메모리와 관련하여 꼭 알아야 할 사항

  • 메모리가 겹치는 경우가 절대로 없게 한다.
  • System.gc() 함수를 호출하며 가비지 콜렉터를 명시적으로 수행해 준다.

이 두개를 안하면 핸드폰이 뻗는 수가 있다고 함. 뻗게 하는 프로그램이라면 머 전혀 안해도 무방하겠군..;; --창섭

destoryApp 메소드의 unconditional에 대하여...

destoryApp 메소드에는 unconditional 이라는 boolean 값이 있다. MIDlet이 더 이상 필요하지 않거나 종료되어야 할 때 DestoryApp 메소드가 호출되고 MIDletDestroyed 상태로 들어가게 되는데, 만약 MIDlet이 중요한 과정을 수행중이라면 MIDletStateChangeException을 발생시켜 그 과정이 끝날때까지 Destroyed 상태로 가는 것을 막을 수 있다. 하지만 이런 요청도 상황에 따라 받아들여지지 않을 수 있는데, unconditional 이라는 값이 그 상황을 알려준다. unconditionaltrue 인 경우에는 MIDletStateChangeException 을 발생해도 무시되는 상황이고, false 인 경우에는 MIDletStateChangeException을 발생하면 Destroyed 상태로 가는 것을 잠시 막을 수 있다.

그러므로 destroyApp 메소드를 만들 때 MIDletStateChangeException을 사용해야 하게 된다면 unconditional 값에 따라 이 값이 false인 경우에만 MIDletStatChangeException을 사용하고 true인 경우는 무조건 Destroyed 상태로 가야하는 상황이므로 그 상황에 맞게 처리해 주면 된다.


MobileJavaStudy