2010-05-04 5 views
2

안녕하세요. 자바와 블랙 베리에서 프로그래밍을 시작합니다. 세 가지 창으로 된 응용 프로그램을 개발 중입니다. 장치에 대한 기본 정보가 표시됩니다.이 창은 이미 완료되어 작동하고 있습니다. 백그라운드에서 실행중인 프로세스를 생성해야하는데이 프로세스는 10 분마다 실행됩니다. 이 프로세스를 백그라운드에서 실행하고 창을 닫으려고합니까? 검은 딸기 - 실행중인 배경 신청

는 응용 프로그램을 실행하는 종류 :

public class InfoBerry extends UiApplication{ 
    public vtnprincipal vtnprincipal; 
    public vtnbateria vtnbateria; 
    public vtnestado vtnestado ; 
    public vtnacerca vtnacerca; 

    public InfoBerry(){ 

    } 

    public static void main(String[] args) { 
      InfoBerry theApp = new InfoBerry(); 
      theApp.mostrarpantalla(); 
    } 
    public void mostrarpantalla(){ 

     vtnprincipal = new vtnprincipal(this); 
     vtnbateria = new vtnbateria(this); 
     vtnestado = new vtnestado(this); 
     vtnacerca = new vtnacerca(this); 
     // Inicailizamos los componentes de la pantalla principal 
     vtnprincipal.incventana(); 
     // La pnemos en lo alto de la pila de pantallas 

     pushScreen(this.vtnprincipal); 
     } 
} 

그리고 이것은 당신이 백그라운드에서 실행하는 데 필요한 클래스입니다. 배경에서이 클래스를 호출하여 호출해야합니다.

class iconnoti extends MainScreen{ 
    //icono de la temperatura 
    EncodedImage imgtem = 
      EncodedImage.getEncodedImageResource("icon_bateria_t.png"); 
    ApplicationIcon icontem = new ApplicationIcon(imgtem); 
    //icono de la carga de la bateria 
    EncodedImage imgcarga = 
      EncodedImage.getEncodedImageResource("icon_bateria.png"); 
    ApplicationIcon iconcarga = new ApplicationIcon(imgcarga); 
    //icono de la memoria 
    EncodedImage imgmemo = 
      EncodedImage.getEncodedImageResource("icon_memoria.png"); 
    ApplicationIcon iconmemo = new ApplicationIcon(imgmemo); 
    ApplicationIcon mIcon = icontem; 
    boolean act; 
    public iconnoti() { 


    } 

    public void rotar_temperatura(){ 
     cron c1; 
     actualizar_icono(icontem); 
     actualizar_valor(DeviceInfo.getBatteryTemperature()); 

     c1 = new cron(2,10000); 
     c1.start(); 


    } 
    public void rotar_memoria(){ 
     cron c1; 
     actualizar_icono(iconmemo); 
     actualizar_valor(34); 

     c1 = new cron(3,10000); 
     c1.start(); 

    } 
    public void rotar_nivel(){ 
     cron c1; 
     actualizar_icono(iconcarga); 
     actualizar_valor(DeviceInfo.getBatteryLevel()); 
     c1 = new cron(1,10000); 
     c1.start(); 

    } 

    public void iniciar_servicio() { 
     try { 

      ApplicationIndicatorRegistry reg = 
        ApplicationIndicatorRegistry.getInstance(); 
       ApplicationIndicator Indicator = 
        reg.register(mIcon, false, true); 
       } catch (Exception e) { 

     } 
    } 

    public void parar_servicio() { 
     try { 
       ApplicationIndicatorRegistry reg = 
        ApplicationIndicatorRegistry.getInstance(); 
       reg.unregister(); 
     } catch (Exception e) { 
     } 
    } 

    void actualizar_valor(int value) { 
     try { 
       ApplicationIndicatorRegistry reg = 
        ApplicationIndicatorRegistry.getInstance(); 
       ApplicationIndicator appIndicator = 
        reg.getApplicationIndicator(); 
       appIndicator.setValue(value); 
     } catch (Exception e) { 
     } 
    } 

    void actualizar_icono(ApplicationIcon icon) { 
     try { 
       ApplicationIndicatorRegistry reg = 
        ApplicationIndicatorRegistry.getInstance(); 
       ApplicationIndicator appIndicator = 
        reg.getApplicationIndicator(); 
       appIndicator.setIcon(icon); 
     } catch (Exception e) { 
     } 
    } 
} 

class cron extends Thread { 
    //private ApplicationIcon icono; 
    public int valor; 
    private int tiempo; 
    iconnoti icon = new iconnoti(); 

    public cron(int v, int t){ 
     valor = v; 
     tiempo = t; 
    } 

    public void run() { 
     try { 
      sleep(tiempo); 
     } catch (InterruptedException e) { 

     } 
     if(valor == 1){ 
      icon.rotar_temperatura(); 
     }else if(valor == 2){ 
      icon.rotar_memoria(); 
     }else if(valor == 3){ 
      icon.rotar_nivel(); 
     } 

    }   

} 

도움 주셔서 감사합니다.

답변

3

배경 응용 프로그램은 일종의 프로세스이므로 적어도 처음에는 GUI가 없습니다.

대신 UiApplication 클래스의 응용 프로그램을 확장해야
    • 당신은 그냥 클래스를 cron과 및 응용 프로그램 생성자에서 실행하는 iconnoti 클래스의 모든 이동이 화면을 밀어 안 :

      public class BerryInfoApp extends Application { 
          public BerryInfoApp() { 
            UpdateThread updateThread = new UpdateThread(10*60*1000); 
            updateThread.run(); 
          } 
          public static void main(String[] args) { 
           (new BerryInfoApp()).enterEventDispatcher(); 
          } 
      } 
      
      class UpdateThread extends Thread { 
      EncodedImage imgtem = EncodedImage 
           .getEncodedImageResource("icon_bateria_t.png"); 
      ApplicationIcon icontem = new ApplicationIcon(imgtem); 
      EncodedImage imgcarga = EncodedImage 
           .getEncodedImageResource("icon_bateria.png"); 
      ApplicationIcon iconcarga = new ApplicationIcon(imgcarga); 
      EncodedImage imgmemo = EncodedImage 
           .getEncodedImageResource("icon_memoria.png"); 
      ApplicationIcon iconmemo = new ApplicationIcon(imgmemo); 
      ApplicationIcon mIcon = icontem; 
      
      static final int ACTION_NONE = 0; 
      static final int ACTION_BATTERY_TEMP = 1; 
      static final int ACTION_MEMORY = 2; 
      static final int ACTION_BATTERY_LEVEL = 3; 
      int mAction = ACTION_BATTERY_LEVEL; 
      long mPeriod; 
      
      public UpdateThread(int period) { 
          mPeriod = period; 
      } 
      
      public void stop() { 
          mAction = ACTION_NONE; 
      } 
      
      public void run() { 
          iniciar_servicio(); 
          while (mAction != ACTION_NONE) { 
           switch (mAction) { 
           case ACTION_BATTERY_TEMP: 
            rotar_temperatura(); 
            mAction = ACTION_MEMORY; 
            break; 
           case ACTION_MEMORY: 
            rotar_memoria(); 
            mAction = ACTION_BATTERY_LEVEL; 
            break; 
           case ACTION_BATTERY_LEVEL: 
            rotar_nivel(); 
            mAction = ACTION_BATTERY_TEMP; 
            break; 
           default: 
            break; 
           } 
           try { 
            sleep(mPeriod); 
           } catch (InterruptedException e) { 
           } 
          } 
          parar_servicio(); 
      } 
      
      public void rotar_temperatura() { 
          actualizar_icono(icontem); 
          actualizar_valor(DeviceInfo.getBatteryTemperature()); 
      } 
      
      public void rotar_memoria() { 
          actualizar_icono(iconmemo); 
          actualizar_valor(34); 
      } 
      
      public void rotar_nivel() { 
          actualizar_icono(iconcarga); 
          actualizar_valor(DeviceInfo.getBatteryLevel()); 
      } 
      
      public void iniciar_servicio() { 
          try { 
           ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry 
             .getInstance(); 
           ApplicationIndicator Indicator = reg.register(mIcon, false, true); 
          } catch (Exception e) { 
          } 
      } 
      
      public void parar_servicio() { 
          try { 
           ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry 
             .getInstance(); 
           reg.unregister(); 
          } catch (Exception e) { 
          } 
      } 
      
      void actualizar_valor(int value) { 
          try { 
           ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry 
             .getInstance(); 
           ApplicationIndicator appIndicator = reg.getApplicationIndicator(); 
           appIndicator.setValue(value); 
          } catch (Exception e) { 
          } 
      } 
      
      void actualizar_icono(ApplicationIcon icon) { 
          try { 
           ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry 
             .getInstance(); 
           ApplicationIndicator appIndicator = reg.getApplicationIndicator(); 
           appIndicator.setIcon(icon); 
          } catch (Exception e) { 
          } 
      } 
      } 
      
  • +0

    답변과 도움을 주셔서 감사합니다. 코드를 구현할 때 및 의견을 끝낼 때. 감사합니다. – Leandro

    +0

    여러분을 환영합니다! –

    관련 문제