Siemens TC65 manual Programming the MIDlet, Threads, Example

Page 88

TC65 JAVA User's Guide

Strictly confidential / Released

s

12.2Programming the MIDlet

The life cycle and structure of MIDlets are described in Chapter 6. Since the MIDlets will run on J2ME™, all of J2ME™’s features, including threads, are available. Small applications, such as those without any timer functions or those used only for tests and simple examples, can be written without using threads. Longer applications should be implemented with threads.

12.2.1Threads

Although small applications can be written without using threads longer applications should use them. The Java programming language is naturally multi-threaded which can make a substantial difference in the performance of your application. Therefore we recommend referring to Java descriptions on threads before making any choices about threading models. Threads can be created in two ways. A class can be a subclass of Thread or it can implement Runnable.

For example, threads can be launched in startApp() and destroyed in destroyApp(). Note that destroying Java threads can be tricky. It is recommended that the developer read the Java documentation on threads. It may be necessary to poll a variable within the thread to see if it is still alive.

12.2.2Example

/* This example derives a class from Thread and creates two instances

*of the subclass. One thread instance finishes itself, the other one

*is stopped by the main application. */

package example.threaddemo;

import javax.microedition.midlet.*;

public class

ThreadDemo extends

MIDlet {

 

/* Member variables */

// Flag for stopping

threads

boolean

runThreads = true;

DemoThread

thread1;

//

First instance of

DemoThread

DemoThread

thread2;

//

Second instance of DemoThread

/* Private class implementing the thread to be started by the * main application */

private class DemoThread extends Thread { int loops;

public DemoThread(int waitTime) {

/* Store number of loops to execute */ loops = waitTime; System.out.println("Thread(" + loops + "): Created");

}

public void run() { System.out.println("Thread(" + loops + "): Started"); for (int i = 1; i <= loops; i++) {

/* Check if main application asked thread to die */ if (runThreads != true) {

System.out.println("Thread(" + loops + "): Stopped from outside"); /* Leave thread */

return;

}

/* Print loop counter and wait 1 second,

*do something useful here instead */ System.out.println("Thread(" + loops + "): Loop " + i);

TC65 JAVA User's Guide_V05

Page 88 of 90

26.09.2005

Image 88 Contents
Java Users Guide Document Name TC65 Java Users Guide TC65 Java Users GuideSeptember 26 TC65 Java Users GuideV05Table of Contents Maintenance 3.3.2Debug Environment Compile and Run a Program without a Java IDEJava Security Java Tutorial Differences from the TC45Sun Java Studio Mobility 6 Switching Emulators TablesPreamble Overview New solutionRelated Documents Terms and Abbreviations Abbreviation DescriptionInstallation CD InstallationSystem Requirements Components Module Exchange Suite1.2 WTK SDK and Java StudioInstalling the Standard Development Toolkit Siemens Mobility Toolkit InstallationInstalling the Smtk Environment Installing Eclipse Installing Borland JBuilder X Installing Sun Java Studio MobilityInstalling Module Exchange Suite MES Smtk Uninstall UpgradesSoftware Platform Software ArchitectureInterfaces 1 ASC0 Serial Device General Purpose I/O3 DAC/ADC 4 ASC1JVM Interfaces IP NetworkingMedia Other InterfacesData Flow of a Java Application Running on the Module ADCHandling Interfaces and Data Service Resources Module StatesState 1 Default No Java Running State 4 Default Java Application ActiveState 2 No Java Running, General Purpose I/O and I2C State 3 No Java Running, General Purpose I/O and SPIState 5 Java Application Active, General Purpose I/O and I2C Module State Transitions Maintenance IP ServicePower Saving ChargingAirplane Mode AlarmShutdown Automatic ShutdownRestart after Switch Off Special AT Command Set for Java ApplicationsSwitching from Data Mode to Command Mode Mode Indication after MIDlet StartupConfiguration of Serial Interface Java CommandsRestrictions Flash File System MemoryPerformance JavaFrequencyB 1 / frequencyA Duration of each loop = 600 sPin I/O Data Rates on RS-232 APIPlain Serial Interface Voice Call in ParallelScenarios with Gprs Connection Upload75% 63% 55% 33% 65% 55% 33% 16%91% 87% 81% 73% Download85% 78% 58% 48% MIDlets MIDlet Documentation MIDlet Life CycleMIDlet.destroyApp method Hello World MIDlet Here is a sample HelloWorld programCommand Line Based File Transfer to ModuleModule Exchange Suite Windows BasedOver the Air Provisioning Security IssuesOtap Introduction to Otap Over The Air Provisioning OtapOtap Overview Parameters Max. Length AT Keyword SM Install/update Delete Otap ParametersShort Message Format Install operationDelete operation Java File Format Procedures Install/Update Delete Time Out Values and Result Codes Tips and Tricks for OtapOtap Tracer SecurityHow To Compile and Run a Program without a Java IDE Build ResultsRun on the Module with Manual Start CompileRun on the Module with Autostart Switch on Autostart Switch off AutostartDebug Environment Data Flow of a Java Application in the Debug EnvironmentEmulator Java IDE Sun Java Studio Mobility 6 2004Q3 Switching emulators Projects Examples TemplatesCompile and run JBuilderX JDK settings Borland JBuilderExamples TC65 Java Users Guide JBuilder2005 JDK settings Eclipse IntegrationEclipse Plug-in installation Eclipse J2ME platform TC65 Java Users GuideV05 26.09.2005 Example Eclipse Project importEclipse Example Compile and debug Eclipse Create packageEclipse Configuration BreakpointsJava Security Secure Data Transfer ModeAsja Vasecuritycertificate J a va C u r i t y c e r t i f i c a t eCreate a Secure Data Transfer Environment Step by Step Create CA and generate CA Root CertificateSecured mode Unsecured modeExecution Control Change to Secured Mode Concept Build binary data for AT command AtsjsecGenerate key pair Generate customer root CertificateConcept for the Signing the Java MIDlet Encoded JAR-File HashStructure and Description of the Java Security Commands Application and Data ProtectionStructure of the Java Security Commands General structureBuild Java Security Command Hash SHA1Send Java Security Command to the Module ATSJSEC?Create Java Security Commands Export X.509 Root CertificateCommand switch off module exchange functionality Sign a MIDletUsing the AT Command API Class ATCommandJava Tutorial Instantiation with or without CSD SupportSending an AT Command to the Device, the send Method Data Connections TC65 Java Users Guide Non-blocking ATCommand.send Method ATCommandResponseListener InterfaceSynchronization ATEvents ATCommandListener InterfaceImplementation Registering a Listener with an ATCommand Instance Threads Programming the MIDletExample TC65 Java Users Guide Differences from the TC45
Related manuals
Manual 123 pages 53.3 Kb