Ich möchte eine Thread-Schleife, die String jedes Mal ändert. (z. B. d -> dd -> ddd -> dddd ...) Ich erwartete, dass es sowohl die Ansicht aktualisiert, als auch der Thread ausgeführt wird, aber der Bildschirm stoppt bei der ersten Ausführung von run() (was "dd" ist). Was ist falsch? Vielen Dank!Android - einfache Thread-Schleife funktioniert nicht
package com.example.name.app;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
thread t1 = new thread();
t1.start();
}
});
}
private class thread extends Thread {
TextView textView = (TextView) findViewById(R.id.tv);
@Override
public synchronized void run() {
String text = "d";
while (true) {
try {
text += "d";
textView.setText(text);
sleep(5000);
} catch (Exception e) {
return;
}
}
}
}
}
Die UI-Elemente müssen im UI-Thread aktualisiert werden. Entweder benutze den Handler, um zu posten oder 'runOnUiThread', um die' TextView' zu aktualisieren. Verwenden Sie auch den CamelCase for Class-Namen gemäß der Namenskonvention. – Chithra