Ich habe einen ausführbaren Thread (Objekt) in mainactivity.kt onCreate wie folgt.
Code: Select all
runnable = Runnable {
// Code to run in the background thread
val myURL = "mydomain.com/myjson.php"
thejsonstr = URL(myURL).readText()
runOnUiThread {
// Code to update UI elements
}
}
Und ich rufe diesen Thread wie folgt in einem Button auf oder starte ihn, um die JSON-Daten/-Zeichenfolge vom Webserver abzurufen.
Code: Select all
btnjson.setOnClickListener {
val thread = Thread(runnable)
thread.start()
Toast.makeText(this@MainActivity, thejsonstr, Toast.LENGTH_SHORT).show()
}
Das funktioniert, aber hier ist meine Frage. Ich verstehe, dass dies ein Thread ist, der ewig läuft oder in einer Schleife läuft, bis Sie ihn stoppen. Bedeutet das, dass dieser Thread immer und immer wieder JSON-Daten vom Webserver anfordert oder nur einmal ausgeführt und dann angehalten wird? Da ich diesen Thread jedes Mal, wenn ich JSON-Daten anfordern muss, innerhalb einer Schaltfläche starte, heißt das dann, dass jedes Mal, wenn ich auf die Schaltfläche klicke, ein NEUER Thread gestartet wird?
Update:
Noch eine Frage. Wenn mit jedem Tastenklick ein neuer Thread erstellt wird, gibt es dann eine Möglichkeit, den zuvor erstellten Thread zu zerstören, bevor ein NEUER Thread erstellt und gestartet wird, oder bereinigt das System automatisch die zuvor erstellten Threads, die nicht ausgeführt werden, wenn es dazu kommt?