Android-activiteit dimt, verliest focus en loopt vast - geen foutmeldingen en werkt na eerste run

Dus dit is het probleem:

De activiteit start - en in onResume() werkt wat in een achtergrondthread die een lijstweergave vult. Dit wordt gedaan terwijl een voortgangsdialoog wordt weergegeven volgens de volgende afbeeldingen:

Loading dialog whilst web services called in background

Dat werk is voltooid - en de voortgangsdialoog wordt verteld aan .dismiss ();

Het dialoogvenster verdwijnt - mijn lijstweergave kan worden bekeken, maar de activiteit verliest focus - en een aantal dims naar de achtergrond. Dit dwingt me om het huis onder druk te zetten en te sluiten voordat het opnieuw wordt geopend - volgens dit voorbeeld:

The app locks after calling dismiss on the progress dialog

Dit probleem gebeurt ELKE keer dat de toepassing voor de eerste keer wordt uitgevoerd. Draait nadat de app-vergrendelingen altijd succesvol zijn en het probleem is nooit meer evident! Zoals je op de foto kunt zien - alles is donker geworden - maar na het sluiten van de forceeractie reageert het zicht opnieuw zoals ik zou verwachten terwijl alles normaal werkt. Er is niets in de logcat om me te helpen het probleem te diagnosticeren - en alle code lijkt correct te werken.

Help alstublieft!

Een codedump uit de activiteitsactiviteit Replay List is hier: http://pastebin.com/YG59VFPu - het zal waarschijnlijk moeilijk om te volgen - maar bij de eerste keer zal het een dropbox-login doen, wat werkt - dan zal het findAllReplays() - wat ook werkt - uiteindelijk in returnres runbaar worden wat resulteert in het verdwijnen van de dialoog - wat ook werkt - waar het probleem lijkt te gebeuren ...

3
geef een beetje code op. Het lijkt gerelateerd te zijn aan je achtergrondwerk, als mijn aanname, dat dit maar één keer wordt geactiveerd en daarna de losse focus optreedt
toegevoegd de auteur Rafael T, de bron
probeer loadingList.cancel() in plaats van te negeren ()
toegevoegd de auteur Rafael T, de bron
sorry, het lijkt mij dat een of andere Thread je Dialoog niet correct afsluit en dat het op de een of andere manier nog steeds focus heeft. Waarom probeer je een AsyncTask niet en sluit/annuleer het in onPostExcecute?
toegevoegd de auteur Rafael T, de bron
Oké, geef enkele fragmenten van de activiteit
toegevoegd de auteur RenegadeAndy, de bron
Ok - een activiteitsdump en een korte uitleg toegevoegd - De OddJobs-klasse voert gewoon webservice-oproepen uit - alle POJO-werk op de achtergrond.
toegevoegd de auteur RenegadeAndy, de bron
dit resulteert in precies hetzelfde gedrag.
toegevoegd de auteur RenegadeAndy, de bron
Welnu, waarom zou dat zich anders gedragen dan de methode die ik op dit moment gebruik?
toegevoegd de auteur RenegadeAndy, de bron

2 antwoord

Ok Dus uiteindelijk deed ik het volgende.

Ik heb een AsyncTask gemaakt - wat bij pre-execute de dialoog op dezelfde manier creëerde, aan het eind van doinbackground sloot het de dialoog omdat mijn onPostExecute nooit wordt uitgevoerd - hoe dan ook het dialoogvenster aan het einde van doinbackground-werken wordt afgewezen. En dat is precies wat ik gebruik, wat mijn probleem in wezen heeft opgelost.

3
toegevoegd
Leuk om te weten dat je je probleem hebt opgelost. Maar dit is misschien niet universeel case.onPostExecute zal altijd worden uitgevoerd als je doinbackground-taak is voltooid
toegevoegd de auteur Tofeeq, de bron

Als u uw scherm wilt behouden, kunt u een vlag in uw activiteit instellen

 this.getWindow().
        addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Uw scherm blijft actief totdat de huidige activiteit op de voorgrond staat. Of u kunt wake lock gebruiken als u iets op de achtergrond doet en uw scherm vóór, tijdens of na het achtergrondwerk wilt behouden.

Power Manager to keep screen on.Never forget to mention appropriate permission.

Hoewel je je probleem voor mijn antwoord hebt opgelost, maar ik hoop dat het je helpt om het concept te wissen om het scherm aan te zetten.

0
toegevoegd