zugrif auf Thread nach Handy drehen.

  • Antworten:6
  • Bentwortet
Jokel
  • Forum-Beiträge: 1.527

09.08.2021, 19:28:51 via Website

Hallo möchte auf einen noch Laufenden Thread zugreifen nach dem Handy drehen.

Im Moment habe ich es über eine Klassenvariable (static) gelöst.

Beim drehen vom Handy wird ja die onCreate neu gestartet eigentlich sogar die Klasse neu erstellt.

Ich möchte es nicht mit static haben auch nicht einen Service, Singleton oder ViewModel benutzen.

Wie Kann ich den noch laufenden Thread nach den Drehen aufrufen?
Besser gesagt wie komme ich wider an die Instanz des Threads?

Eine Instanzvariable (kein static) ist ja nach dem drehen nicht mehr gültig.

Es muss also eine Möglichkeit geben wider an die Instanz des Threads zu kommen. Er läuft ja weiter nach dem Handy drehen.
Wenn ich dem Thread einen Namen mitgebe setName(String st) wie kann ich ihn nach dem drehen finden?

dieser code geht aber ich möchte es ohne static

public class MainActivity extends AppCompatActivity {

    static Thread t1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        if (t1 == null) {
            t1 = new Thread(new MyThread());
            t1.start();
            Log.d("test","Thread wurde gestartet");
        }
    }

    public class MyThread implements Runnable {
        @Override
        public void run() {
            for (int i=0 ; i<100 ; i++) {
                Log.d("test","Thread läuft : "+i);
                try {
                    sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            } 
        } 
    } 

}

— geändert am 09.08.2021, 19:34:47

Kommentieren
Beste Antwort
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

14.08.2021, 18:00:27 via Website

https://stackoverflow.com/a/8814650
So wurde das seit jeher gemacht. Wiederspricht zwar etwas der Activity Lifecycle aber funktioniert.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

12.08.2021, 13:46:35 via Website

Hallo keiner eine Idee wie man das lösen könnte?

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

14.08.2021, 17:44:07 via Website

Hallo Jokel,

Entweder du kannst wie in Java auch die Threads auslesen:
https://stackoverflow.com/a/27414156

Ansonsten schaltet du in der Manifest das Neuerstellen der Activity bei Drehen aus, würde auch helfen. Ich war noch nie Fan davon und hatte auch bisher keinen Nachteil dadurch.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Jokel
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

14.08.2021, 17:48:23 via Website

Ansonsten schaltet du in der Manifest das Neuerstellen der Activity bei Drehen aus, würde auch helfen. Ich war noch nie Fan davon und hatte auch bisher keinen Nachteil dadurch.

Danke für den Tipp .

wie schaut das im Manifest aus ?

Hilfreich?
Kommentieren
Beste Antwort
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

14.08.2021, 18:00:27 via Website

https://stackoverflow.com/a/8814650
So wurde das seit jeher gemacht. Wiederspricht zwar etwas der Activity Lifecycle aber funktioniert.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

14.08.2021, 18:47:02 via Website

Danke

Eine Frage nachdem drehen wird aber doch noch die onCreate aufgerufen nur die Klasse wird nicht zerstört.
Somit haben die Instanzvariablen noch den gleichen Speicherplatz wie bei satic.

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

17.08.2021, 19:04:19 via Website

Wenn du die Änderungen in der Manifest drin hast, wird da nichts mehr aufgerufen oder zerstört. Genau das ist doch der Trick dabei.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren