- Forum-Beiträge: 3.704
19.08.2016, 21:44:34 via Website
19.08.2016 21:44:34 via Website
Hallo liebe Gemeinde,
heute habe ich zwei Fragen an euch ... - bzgl AsyncTask
1)
In einer Klasse foo gibt es mehrere AsyncTasks, die gestartet werden
Die Klasse foo wird z.b. in der MainActivity benutzt
foo MyFoo = new foo();
foo.start();
In foo.start() werden die AsynTasks gestartet
new fooTask_1.execute();
new fooTask_2.execute();
Frage : Was passiert mit fooTask_1 und fooTask_2, wenn ich lediglich in der MainActivity
angebe :
MyFoo = null; (der brutale Weg)
Die Frage bezieht sich darauf , dass ich in fooTask_1 namlich eine Routine drin habe , die
sich definitv aufhängen kann, ergo kann ich NICHT mit einem fooTask_1.cancel() arbeiten, die wird nicht erkannt.
Gibt es vielleicht eine elegante Lösung ???
( zur Erklärung : der Standard "MediaExtractor" ist in foo_Task_1 drin , dieser hängt sich auf und kommt auch nicht mehr raus , wenn ein URL-Stream keine gültigen Daten hat - der bleibt im Nirwana)
.
.
Zweite Frage :
Ich habe vom Mediaplayer den onPrepareListener implementiert.
Dort möchte ich zwei Tasks hintereinander starten
FFMpegPlayer.setOnPreparedListener(new FFmpegMediaPlayer.OnPreparedListener()
{
@Override
public void onPrepared(FFmpegMediaPlayer mp)
{
mp.start();
new fooTask_1().execute();
new fooTask_2().execute();
}
Interessanterweise geht dass nicht, FooTask_1 wird gestartet , erreicht den Initiator,kommt aber nicht in doInBackground rein, weil fooTask_2 direkt danach aufgerufen wurde.
Beide Tasks sind völlig autark - keine gemeinsamen Variablen
Wo fooTask_1 hängt, kann ich NICHT nachvollziehen - auch kein onPostExecute()
Ich habe es jetzt gelöst, indem ich einen KombiTask gebaut habe , aber mich interessiert es , warum ich nicht direkt hintereinander zwei Tasks starten kann.
Ich Danke euch im Voraus
— geändert am 19.08.2016, 23:32:55
Liebe Grüße - Stefan
[ App - Entwicklung ]
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.