We've actually fixed a few ANR deadlocks in this last release [1], as well as a few others in the releases since 1.8.0 [2].
If you can supply reproduction steps, we'd love to be able to fix this issue as I'm sure you're not the only one experiencing it. In addition, we're more than happy to accept fixes as contributions :D
[1]: https://github.com/ParsePlatform/Parse-SDK-Android/releases/...
I think the guy on the ticket didn't really understand what I was saying. I'm happy to provide any extra info necessary (what I can remember anyway).
From looking through the code, the issue still appears to exist. [1] is called on the Main Thread. It eventually calls to a synchronized block [2]. [3] is called from a background thread and uses the same synchronised lock.
--> Main Thread + Background Thread using same lock == Trouble
One other annoying issue I reported (#937744189590638 - private) was not being able to update the GCM token. The field is readonly, even though the GCM docs explicitly state that the key changes over time. Meaning you have to delete and recreate the Installation - and what happens if you have other objects linked to that installation? Super annoying. Could be easily solved by making that field writable.
[1]: https://github.com/ParsePlatform/Parse-SDK-Android/blob/mast...
[2]: https://github.com/ParsePlatform/Parse-SDK-Android/blob/mast...
[3]: https://github.com/ParsePlatform/Parse-SDK-Android/blob/mast...
WRT the ParseCommandCache links you sent, you're right that there is some trouble using the same lock on a background thread and UI thread. It would possibly cause some UI stuttering, but it wouldn't necessarily cause a deadlock on it's own. There's probably a bit more to it and I'd love to dig deeper and find out why.
Posted more info for the ParseCommandCache ANR in the ticket.
Cheers for taking feedback seriously! :)
If you can find a part-time engineer that can build and maintain a backend with all of Parse's features, you should absolutely do that.
> If you can find a part-time engineer that can build and maintain a backend with all of Parse's features, you should absolutely do that.
Most likely, you're not going to be using all of Parse's features; probably just a small subset of them. So I think it's easily doable. In fact, if you were intending to use Cloud Code, you could probably do it yourself with the time you'd save by not having to deploy to production to test your code!
Essentially Disk I/O was using the same synchronized lock as the main thread. On some devices this caused a reproducible ANR (App Not Responding). I ended up writing a small REST Api client using Retrofit to replace the SDK. It worked well but as mmastrac mentioned there are just too many other critical issues with Parse to make it suitable for anything other than quick prototypes.
Besides, it's super expensive if you need have any sort of scale. You could almost hire a part-time engineer to build and maintain a backend for those prices.