3 distinct phases
- Paused:
- Just been constructed and not yet entered startApp
- Can be in paused state after a call to pauseApp or notifyPaused methods
- Should hold as few resources in this state
- Can receive asynchronous notifications like a timer firing
- Active
- After entry to startApp
- moves from Paused to Active after a call to resumeRequest
- Can allocate and hold all resources for active execution
- Destroyed
- After return from destroyApp or notifyDestroyed
- Cannot reenter any other state.
- Replaces System.exit which will throw a java.lang.SecurityException
- Midlet states can be triggered by MIDP or requests from app.
- All states except startApp complet after return from caller