2009-06-20 3 views
0

빠른 질문 ... J2ME (CLDC 1.1, MIDP-2.1)을 사용하면 일정 시간 동안 Midlet을 잠글 수 있습니다 (예 : 스레드 사용 안함). 예 :스레드없이 J2ME Midlet을 잠자기 상태로 만들 수 있습니까?

public class myMidlet extends MIDlet{ 
    public void startApp() { 
     /* Sleep for 10 seconds */ 

     /* The answer was: */ 
     try { 
      Thread.sleep(time_ms); 
     } catch (Exception e) {} 
    } 
... 

자바를 많이 사용하고 간단한 수면을 위해 스레드를 프로그래밍하고 싶지는 않습니다.

미리 감사드립니다

요약

Java 지식이 부족합니다. Thread.sleep()을 사용하여 본 예제는 Midlet 자체에서 생성 된 것이 아니라 Midlet에서 생성 한 스레드 객체에서만 사용할 수 있다고 생각하게되었습니다. Midlet 로직을 쓰레드로 스풀링하지 않고 싶다.하지만 지금은 Midlet이 디폴트 쓰레드로 돌아가는 것을 안다. :) 내가 읽지 않은 자바 책을 읽으려고하지 않았다. 나는 이제까지 언어를 사용할 것이라고 생각한다.

답변

6

midlet을 일시 중지 상태로 두거나 지정된 시간 동안 실행을 중지한다는 의미인지 이해하지 못했습니다.

후자 인 경우 사실 실망하지 않으므로 왜 쓰레드를 사용하고 싶지는 않습니다. 이것은 큰 문제가 아닙니다. 필요에 따라 다음 세 줄을 삽입하면됩니다.

try { 
    Thread.sleep(10000); 
} catch (Exception ex) {} 

그게 전부입니다. 너무 복잡하지 않습니다.

+0

감사합니다 :) MIDlet이 주 스레드로 실행 중이므로 Thread.sleep()이 필요하다는 것을 알지 못했습니다 ...내가 온라인으로 본 예제는 스폰 된 스레드에서 사용되었습니다. S –

+0

MIDlet은 메인 스레드와 모든 것을 포함하는 일반적인 Java 응용 프로그램입니다. :) Method Thread.sleep()은 어디에서나 사용할 수있는 정적 인 것을 의미합니다. UI 이벤트 (예 : CommandListener의 commandAction() 메소드)를 처리하는 스레드에서 사용하는 경우주의하십시오. – Malcolm

2

나는 정확한 대답을 모르지만 정적 메소드 Thread.sleep (milliseconds)를 호출 할 때의 문제점을 이해하지 못한다. "현재 실행중인 스레드가 잠자기 상태가되도록한다. 지정된 밀리 초 동안 일시적으로 실행을 중단합니다. " 이 프로그래밍 스레드를 호출합니까?

+1

* 자기 자신의 머리를 때 리거나 * 주 스레드가 다른 사람처럼 잠 들어있는 것처럼 액세스하지 못했습니다 (자바가 많지 않음) ... 감사합니다! –

1

스레드가 예외를 throw 할 수 있으므로 Malcolm의 접근 방법을 선택했습니다.

[...] 그냥 [...]

어, 당신은 힘든 시간을 프로그래밍 J2ME를 가지고 스레드 프로그래밍을 피하기 위해 노력하고 있습니다 스레드 프로그램 싶지 않아요. 응용 프로그램이 조금 복잡해지면 특히 네트워크 연결을 사용할 때 스레드를 사용해야합니다. 또한 일부 작업에 2 ~ 3 초 이상 걸리면 별도의 스레드에서 실행하는 것이 좋습니다. 가능하면 (동시에) 사용자에게 진행중인 작업에 대해 알립니다.

Btw, 내가 잊은 것. 최근 대학 과정을위한 J2ME 응용 프로그램을 작성했습니다. 거기서 내가 "ExecutableTask"라고 불렀던 것을 만들었습니다. 그래서 편리하고 쉬운 방법으로 쓰레드를 처리 할 수있었습니다. look at the source을 갖고 싶다면 ... 불행히도 Google의 호스팅 솔루션의 일부 버그로 인해 Google 저장소에서 온라인으로 찾아 볼 수 없습니다 (내 프로젝트의 일부 이름이 원인).

+0

감사 Juri ... 그것을 시도하고 잡히지 않은 예외 일을 얻은 후에 나는 받아 들여진 응답을 교환했다. 스레드를 피하려고하지 ... 그것은 MIDlet에서 쓰레드 기능을 가지고 있다는 것을 깨닫지 못했던 간단한 어플리케이션입니다 :) –

+1

메인 스레드를 차단하는 것을 피하기 위해 별도의 스레드가 필요할 때 나는 새로운 것을 엉망으로 만들고 싶지 않습니다. 클래스, 나는 스레드를 확장하고 그것을 실행하는 익명의 클래스를 만듭니다. 특히 Juri가 설명하는 경우 파일 시스템 액세스 또는 일부 네트워크 연결과 같이 매우 편리합니다. – Malcolm

0

Object.wait(), Object.wait(long timeoutValue)을 사용해보세요. 주요 startApp()/시스템 스레드를 시도하고 지연 시키라고 권하지는 않겠지 만.

관련 문제