ODK Collect crashing on Tecno SAS6 after only one or two interviews

I was talking about changes we made to the JavaRosa/Collect implementation. We did not specifically look for changes to make in the form design but I think if there had been anything majorly problematic we would have noticed it.

I agree with all of this. The images are not maintained in RAM after being taken so they should have minimal impact on performance if any at all. I do want to emphasize what @danbjoseph said -- storage can become an issue and bandwidth can as well. You should be warned on conversion from XLSForm to use max-pixel if you don't already and that's important.

If all of your data collectors are sending images at the same time, you should expect that the submission throughput will be low and that there may be errors sending. You will likely have to stagger submissions and you probably want to run some tests with the number of submissions with images you expect to send simultaneously on the connection you will be using.

If you have an example of a system that is arbitrarily programmable and tries to make assertions about likely performance of a user-produced artifact, that would be helpful to look at. Given a form definition, it would be possible (though not simple) to quantify the amount of memory used per repeat instance. That's only part of the battle, though, because as you've seen first hand, Android and other applications on the device can be doing all kinds of things and the decisions about what Android chooses to keep in memory and not are hard to predict.

I'm still not convinced that Collect's RAM usage is the primary problem. Android 7.0 specifically has a lot of bugs and so it might just be that you were hitting some before some additional reboots. You could try searching for articles about the most common Android 7.0 issues to see if any of those match what you've experienced and whether there are suggestions for approaching them.

Collect does save a snapshot of collected data on each screen change. One thing you could do is to train data collectors on staying calm if things freeze up, rebooting their device, and when they open up Collect and tap on the form they want to fill out, using the hierarchy view to navigate to the question they were on before the reboot.

Memory is reclaimed once a form is closed so that does not capture the point of highest memory usage, unfortunately.

I'm not sure that you're going to get actionable information this way. What I might suggest is focusing on identifying some repeatable processes that allow data collectors to proceed with minimal interruption. That might be things like clearing any other running processes, killing Collect and restarting it, rebooting as I described above.

I think another major question you need to answer is whether the really is an issue after devices have been updated, kept online for a little while and then rebooted. Your previous experience suggests that there might not be.

You could have some questions at the beginning of a flat household form that ask for building information and that use a default to pull the last saved value for each. That way a data collector can simply swipe through if all the information is the same as for the last record they saved. You could get fancy and calculate a hash of those building values to use as a building identifier (or even just concatenate them all together) when you analyze your data. I want to emphasize again that I am not convinced that there really is a problem with form design, though. I think it's worth doing some trials with the new form updates and the latest version of Collect and see what you find.

Deliciously understated. Touché.

Thank you again for your attention. I understand everything you've said and it makes sense.

I very much like the idea of a default based on the last saved value. I think that could simplify our form a bit.

Best,
-Dale

:blush: To be clear, I am genuinely interested in examples. I'd like for us to provide more guidance but it feels like everything needs a bunch of caveats. Seeing how others have framed similar information would certainly help.

Agreed that defaults based on last saved value can be helpful in a lot of places!

Looking forward to hearing what you find in your next round of testing.

I didn't doubt your sincerity for a moment and I appreciate the tactful manner in which you worded your response. We'll report back on how things go. Hope to do some fieldwork in June.

I'll be appreciative if you have a suggestion for my question over in XLS form- Repeat select_one question until "A" is selected - #24 by Dalerhoda. I'm sure you're pulled in a thousand directions and I think there's no hurry if we switch to the default / last-saved-value model and strip out the repeat in our current form (so use one form per HH) but it's still a point on which I'm curious: whether the repeat counter can be decremented elegantly if the user swipes back and indicates that they're finished looping after initially saying they needed one more ride on the merry-go-round. Thanks in advance for your thoughts when able.

@LN: We're going to try this last saved value approach. We've been hosting our data on Kobo for its turnkey simplicity, but they haven't implemented the last saved value support yet. Before I go to the trouble of figuring out how to partner with someone who can set up ODK Central for me, I want to confirm with you that the question types we want to pull forward will work. (The last-saved documentation is very succinct, which I hope means that it works well and across all question types!) Specifically, does the last saved feature work with geopoints? Thank you.

Yes. It will work with any field type that has a literal value. I believe that means the only limitation is that binary values won't work as expected because the files themselves won't appear in Collect.

1 Like