This example shows how to implement background processing in your Midlet.

 /*
J2ME: The Complete Reference

James Keogh

Publisher: McGraw-Hill

ISBN 0072227109

*/
// jad file (Please verify the jar size first)
/*
MIDlet-Name: BackgroundProcessing
MIDlet-Version: 1.0
MIDlet-Vendor: MyCompany
MIDlet-Jar-URL: BackgroundProcessing.jar
MIDlet-1: BackgroundProcessing, , BackgroundProcessing
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
MIDlet-JAR-SIZE: 100

*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;

public class BackgroundProcessing extends MIDlet 
           implements CommandListener
{
  private Display display;
  private Form form; 
  private Command exit;
  private Command start; 
  public BackgroundProcessing()
  {
    display = Display.getDisplay(this);
    form = new Form("Background Processing");
    exit = new Command("Exit", Command.EXIT, 1);
    start = new Command("Start", Command.SCREEN, 2);    
    form.addCommand(exit);
    form.addCommand(start );    
    form.setCommandListener(this);
  }
  public void startApp()
  {
    display.setCurrent(form);
  }
  public void pauseApp()
  { 
  }
  public void destroyApp(boolean unconditional)
  { 
  }
  public void commandAction(Command command, Displayable displayable)
  {
    if (command == exit)
    {
      destroyApp(false);
      notifyDestroyed();
    }
    else if (command == start)
    {
      Process process = new Process(this);
      process.start(); 
      //Do foreground processing here
    } 
  }
}
class Process implements Runnable
{
  private BackgroundProcessing MIDlet;
  public Process(BackgroundProcessing MIDlet)
  { 
   this.MIDlet = MIDlet;
  }
  public void run() 
  {
    try
    {
       transmit ();
    }
    catch (Exception error)
    { 
      System.err.println(error.toString());
    }      
  }
  public void start()
  {
    Thread thread = new Thread(this);
    try
    {
      thread.start();
    }
    catch (Exception error)
    {
    }
  }
  private void transmit() throws IOException 
  {
    //Place code here to receive or send transmission.
  } 
}