Weißer Schirm

K

kay-ju

Neues Mitglied
0
Hallo,

weiß jemand,warum mein Code :
Code:
package com.example.whitescreen;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        long lastTime, newTime;

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
     
        lastTime = System.currentTimeMillis();
        newTime = lastTime;
        while (newTime - lastTime < 2000) {
            newTime = System.currentTimeMillis();
        }
    }
}
folgendes Verhalten an den Tag legt?

setContentView sagt "hello world".
Dann erscheint für 2 Sekunden ein
weißer Schirm und anschließend
erscheint wieder "hello world". Ich
möchte aber, dass der Content auch
in der Wartezeit zu sehen ist. Wie
kann ich da Abhilfe schaffen?

Gruß
Kay-ju
 
1) Die Uhrzeit wird nicht angezeigt, weil in dem Code keine Methode existiert, welche den String an die anzeigten Views übergibt.
Wenn du ein TextView im XML benutzt, muss du den View mit der Methode findViewById(int res) einem TextView im Code referenzieren.

Activity | Android Developers

Wenn Du das gemacht hast, kannst du view.setText() diesen deinen String übergeben.

2) Die while - Scheife, die du benutzt ist eine gute Methode, dein MainThread so aus zulasten, dass dieser seine eigentliche Aufgaben nicht mehr erfüllen kann. Deshalb das weiße Bild. Deine Schleife lagert man in einen eigene Thread aus, so das der MainThread zum Beispiel auf Benutzereingaben reagieren kann.
Statt eine while-Schleife, die unzählige Male durchlaufen wird, wäre es besser einen Timer, einen Thread (mit sleep() ) und so weiter zu benutzen.

Ich vermute, du bist ein Anfänger in Java. Hier ist ein gutes Buch, um Programmieren zu lernen:
Rheinwerk Computing :: Java ist auch eine Insel - index
 
Hallo Markus,

Ich möchte nicht die Uhrzeit ausgeben, sondern
das "Hello World" soll während der zwei Sekunden
weiterhin ausgegeben werden. Um es konkret zu
machen, möchte ich ein Schiebepuzzle, für das
ein Lösungsalgorithmus vorliegt, periodisch
(etwa alle 120 Millisekunden pro Zug) aktualisieren.

Ist da ein Timer angebracht? Ich habe es mit
Sleep versucht, aber da kam auch nur der weiße
Schirm :-(

Gruß
Kai
 
Du nimmst diesen While-Code....und schiebst ihn aus dem Main Thread deiner App.

Den weißen Bildschirm kann ich dir nicht genau erklären. Android ist aber Eventbasiert.

Könnte sein dass für kurze Zeit dein Hello world gesehen werden kann aber der Bildschirm noch paar mal upgedatet werden muss weill der Inflater noch nicht fertig sit. Auf einmal kommt da eine Aufgabe in der While schleife die den Thread für 2 sekunden für sich beansprucht.

Wenn er fertig sit kann der Inflater weiter abgearbeitet werden und das Endergebnis ist zu sehen.
 

Ähnliche Themen

J
  • JennyLessner
Antworten
1
Aufrufe
703
jogimuc
J
J
Antworten
4
Aufrufe
1.155
markus.tullius
markus.tullius
S
  • Simon2202
Antworten
2
Aufrufe
650
Simon2202
S
Zurück
Oben Unten