IllegalArgumentException? Warum?

9

Kann mir jemand erklären, warum dieser Fehler auftritt, oder besser noch, wie gehe ich damit um? Ich kann es nicht reproduzieren. Es ist einer dieser Fehler, die einmal aus einer 1000 aufgetreten sind.

Hintergrund: Der Benutzer versucht sich einzuloggen, ein Fortschrittsdialog wird angezeigt, eine http-Anfrage wird in asynchronen Aufgaben gesendet, der Fortschrittsdialog wird abgelehnt. Fehler tritt auf, App FC.

LoginActivity.java

%Vor%     
Magnus 14.02.2011, 23:40
quelle

2 Antworten

15

Dies kann passieren, wenn der Benutzer die Ansicht entweder ablehnt (z. B. ein Dialogfeld, von dem eine Zurücksetzung möglich ist) oder wenn der Benutzer während der Ausführung der Aufgabe zu einer anderen Aktivität wechselt. Sie sollten ernsthaft darüber nachdenken, den Aktivitäts-nativen Dialog von Android zu verwenden, anstatt ihn zu versuchen Behalte selbst einen Bezug zu den Ansichten. Aber wenn Sie es selbst bearbeiten, möchten Sie vielleicht überprüfen, ob der Dialog tatsächlich mit dem isShowing() Methode vor dem Versuch, es zu entlassen.

    
Yoni Samlan 15.02.2011, 02:34
quelle
6

Ich habe gesehen, dass dies passiert, wenn ein latentes Update für einen Fortschrittsdialog eintrifft, der bereits vollständig oder teilweise abgelehnt wurde. Entweder fordert der Benutzer eine Kündigung an, gleichzeitig versucht das Betriebssystem, die Ansicht zu schließen, und die Verbindung wurde bereits vom Fenster getrennt oder umgekehrt.

Zwischen dem Code, der das Fortschrittsfenster beim Klicken auf eine Schaltfläche anzeigt, und dem Code, der das Fortschrittsfenster auf andere Weise verwirft, gibt es eine Race-Bedingung. Der wahrscheinlichste Ort, um nach dieser Race-Bedingung zu suchen, ist, wo Ihre Anfragen zum Verwerfen der Fenster in den View-Thread (Button-Handler oder einen Code-Callback) gestellt werden.

    
Nick Campion 14.02.2011 23:44
quelle

Tags und Links