kommt drauf an!
, wie die jeweils try/catch/finally-Block normal oder abrupt beendet?
finally-Block "immer ^" ausführt, wenn der try-Block
verlässt Dadurch wird sichergestellt, dass der finally-Block selbst tritt auf, wenn eine unerwartete Ausnahme ausgeführt wird.
^ Ausnahme von oben - schließlich nicht ausgeführt werden kann, wenn Jvm Exits oder Gewinde
für Details getötet wird sehen Java-Spezifikationen:
https://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.20.2
Wie Handler post/postDelayed ausgeführt wird, wird übergeben ? oder scheitert? aus irgendeinem Grund - zum zweiten kann dies geschehen, wenn die Nachricht nicht in die Nachrichtenwarteschlange gestellt wurde - bei einem Fehler, normalerweise, weil der die Nachrichtenwarteschlange verarbeitende Greifer austritt.
aber höchstwahrscheinlich Ihre Aussage wird eine Endlosschleife
** ps machen.Sie müssen eine Ausnahme in try Block oder remove catch Block (wie try {} schließlich {}) kann existieren "ohne" catch, aber Code in catch-Block ohne steigende Ausnahme wird einen Compiler beschweren (Code wird nicht kompilieren)
wenn Sie wollen Schleife n-mal + 1 Sie müssen einige Zustand vor postDelayed in Runnable Lauf hinzufügen() -Methode
in Ihrem Fall Code Flow Ausführung:
- postDelayed Methode von den letzten Zeile außerhalb Definition von runnable
- ausführ tion von runnable von:
- Beginn try-Block
- mit oder ohne
- durch schließlich mit postDelayed in runnable run() Methode Sperranschlag Passing - Weicht für die verzögerte Ausführung auf Haupt-Thread in Nachricht que runnable statt
- dann Endlosschleife auf 2
also sollte ich remove last postDelay out Seite der run() Methode, um postDelay zu erreichen, führe nur Einsen in einer Schleife aus. - AndroidMob
Sie können dies in einer solchen Art und Weise schreiben:
final Handler handler = new Handler();
handler.post(new Runnable() {
// this int will also be passed to method post delayed
// as "this" keyword applies to Anonymous Class
// which body contains everything between brackets of new Runnable() { ... }
int withThis = 1;
@Override
public void run() {
handler.postDelayed(this,1000);
}
});
also wo soll ich anrufen Methode Somthing getan? in run() Methode ..? - AndroidMob
hängt dies auch , was Sie erreichen wollen:
Beispiel
handler.post(new Runnable() {
int counter = 0;
@Override
public void run() {
boolean wasPlacedInQue = false;
doPreMethod();
if(counter =< 10) {
doMethod();
wasPlacedInQue = handler.postDelayed(this,1000);
}
if(wasPlacedInQue) {
counter++;
doPostyMethod();
} else doFailureMethod();
}
den Code in run() Methode synchron auf sogenannten UI-Thread ausgeführt wird - i‘ ts Hauptfaden, der Ihre Anwendung ausführt, finden Sie unter:
https://developer.android.com/training/multiple-threads/communicate-ui.html
wenn Sie daran interessiert sind, es zu studieren mehr ich habe für Sie ein komplettes Arbeitsbeispiel gemacht:
https://gist.github.com/c3ph3us/7d237d540e60597369856cb1fa652a23
so sollte ich letzte postDelay out Seite der Methode run() entfernen zu erreichen postDelay Einzigen laufen in einer Schleife. – AndroidMob
und ja, ich möchte dies mit ... endless loop – AndroidMob
@AndroidMob - se mein bearbeiten – ceph3us