Frage

ok so ich dieses Setup bekam: ein midlet

    Gui extends Midlet{
        private static Gui instance;

        protected void startApp() {
            Display.getDisplay(this).setCurrent(MyForm.getInstance());
        }

            private static final Logger log = LoggerFactory.getLogger();

        public static Datacheck getInstance() {
            return instance;
        }

        public Gui() {
            // Configure logging
        }

        protected void startApp() {
            instance = this;
            Display.getDisplay(this).setCurrent(MyForm.getInstance());
        }

        protected void pauseApp() {
        }

        protected void destroyApp(boolean bool) {
            // Shutdown Microlog gracefully
            LoggerFactory.shutdown();
            notifyDestroyed();
        }

        public static void log(Level level, String message) {
            log.log(level, message);
        }

        public void requestScreen(Form screen) {
            log.info("request screen called");
            Display.getDisplay(this).setCurrent(screen);
        }
    }

eine Form

    MyForm extends Form{
        private static MyForm instance;

        public static MyForm getInstance() {
            if (instance == null) {
                instance = new MyForm();
            }
            return instance;
        }

        private Form(){
            //start task
            new Timer().scheduleAtFixedRate(new PollingService(CallsDialog.getInstance()), 0, UPDATE_INTERVAL);

            //add gui elements ....
        }

        private void updateForm() {
            //never gets executed
        }
    }

und ein Thread

    MyThread implements Runnable{
        private MyForm handle;

        public PollingService(MyForm handle) {
            this.handle = handle;
        }

        public void run() {
            handle.updateForm();
        }
    } 

so die midlet beginnt, setzt seine Form in eine Instanz MyForm erzeugt dann einen neuen Thread myform Dieser Thread soll eine Funktion des myform ruft alle 5 Sekunden

Dies ist ein stark vereinfachtes Beispiel für die reale Sache so bitte nicht den Faden Design ändern

Wenn ich jetzt eine Methode aus der „MyForm“ Klasse ausführen es wird nicht ausgeführt Ich bekomme keine Fehler

Wer weiß, was ich falsch mache?

Bearbeiten geändert, so erstellt es kein Thread (bereits durch Timertask geschehen)

War es hilfreich?

Lösung

1) Sie brauchen keine separaten Thread erstellen Timertask auszuführen. Timer und Timertask Mechanismus enthält bereits Schaffung neuen Thread für jede Timertask Ausführung.

2) Können Sie Code bereitstellen, die mehr Realität hat? Es gibt keine MyThread Schöpfung in Ihrem Beispiel, noch starten () aufgerufen wird. Manchmal Fehler wird nur Methodenaufruf fehlt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top