The best way is to identify the most sensitive crash points in your app and treat them with Try/catch blocks, so you can save data at these points.
try{
// Executa código "sensível" a travamentos
} catch {
// Salva os dados da aplicação
}
In addition, as already suggested, do Periodic Observations, including in onDestroy, onPause, etc., as you have already done.
There is no "Liener" for crashes on the SDK, so you will have to do these treatments whenever possible.
EDIT: You can try this suggestion to create a custom Handler of exceptions they gave in this question in Stackoverflow:
https://stackoverflow.com/questions/37256595/how-to-have-a-callback-for-when-a-crash-occurred-while-using-crashlytics-sdk
I find it difficult, because in the case of crash, no event is triggered... a solution would be to make a periodic save, like emails or applications like
Word
, hence when loading the App, it is possible to recover this data.– Ricardo Pontual