2012-06-27 9 views
6

Sto provando a creare un'app in background che verrà eseguita all'avvio del sistema. Quando lo eseguo manualmente (dalla barra multifunzione), viene visualizzata la schermata ma quando eseguo l'app dopo averla resa un'app di avvio (Esegui automaticamente all'avvio nel descrittore), sullo schermo non viene visualizzato nulla. Sto provando il seguente codice;App BlackBerry: schermata non visualizzata in modalità Auto Run

public class AppClass extends UiApplication { 

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

    public AppClass() { 
     pushScreen(new AppScreen()); 
    } 
} 

E questa è la classe dello schermo;

public final class AppScreen extends MainScreen { 

    private LabelField label; 

    public AppScreen() { 
     setTitle("AppTitle"); 

     label = new LabelField(); 
     label.setText("Ready."); 

     add(label); 
    } 
} 

mi aspetto che la sua un'applicazione UI per cui il suo schermo dovrebbe essere visibile, non importa se è auto-run in fase di avvio o eseguire manualmente. Se ho bisogno di fare qualcosa per farlo funzionare come previsto, per favore guidami su di esso, io sono nuovo allo sviluppo BlackBerry. Sto sviluppando nel seguente ambiente;

  • BlackBerry JDE Eclipse Plugin 1.5.0
  • BlackBerry OS 4,5

risposta

2

Chiamata getApplication().requestForeground(); dalla costruzione della classe di AppScreen in modo che lo schermo sarà visibile.

public final class AppScreen extends MainScreen { 

    private LabelField label; 

    public AppScreen() { 
     setTitle("AppTitle"); 

     label = new LabelField(); 
     label.setText("Ready."); 

     add(label); 

     getApplication().requestForeground(); 
    } 
} 

Una volta che l'applicazione è in esecuzione in background, dobbiamo portarlo mettere in primo piano in modo esplicito per mostrare elemento dell'interfaccia utente ed è quello che stiamo facendo qui.

5

Avvio automatico applicazioni vengono eseguite prima che il sistema operativo abbia completato il boot, quindi non c'è alcun supporto per l'interfaccia utente. Ho il sospetto che la tua applicazione sia in fase di avvio ma non riescono in alcune chiamate dell'interfaccia utente. Il modo documentato per scrivere un'applicazione da eseguire ed eseguire automaticamente dalla schermata principale consiste nel fornire un punto di ingresso alternativo per l'esecuzione automatica con argomenti che indicano al programma che è stato eseguito automaticamente. Quindi utilizzare l'API per attendere fino a quando il sistema operativo è pronto per le applicazioni dell'interfaccia utente.

public class AppClass extends UiApplication { 
    public static void main(String[] args) { 

     if (args.length > 0 && args[0].equals("auto-run")) { 
      // auto start, wait for OS 
      while (ApplicationManager.getApplicationManager().inStartup()) { 
       Thread.sleep(10000); 
      } 

      /* 
      ** Do auto-run UI stuff here 
      */ 
     } else { 
      AppClass theApp = new AppClass(); 
      theApp.enterEventDispatcher(); 
     } 
    } 

    public AppClass() { 
     pushScreen(new AppScreen()); 
    } 
} 
+0

Grazie signore. Fammi provare. – Mudassir