Das über einen Timer zu machen ist absoluter Quatsch. Bitte nicht machen!
Gründe: es ist unsauber, da eine zeitliche Variable entscheidet, ob etwas gespeichert wird oder verloren geht. Für den Nutzer sieht das am Ende aus, als wenn die App macht was sie gerade will (Prinzip "Zufall"). Darüber hinaus muss sich das System um einen Thread mehr kümmern und das kostet je nach Menge der Inhalte Performance und das übrigens auch, wenn keine Änderungen am Text vorliegen und das Speichern unnötig ist, da es zu diesem Zeitpunkt schon gespeichert war. Und so verbraucht man dann noch massig Rechenleistung bei unnötigen Lese und Schreibzugriffen. Vermutlich sind >95% der Lese und Schreibzugriffe unnötig. Wenn das jede App so machen würde, bräuchte ein Smartphone einen Gehäuselüfter vom Desktop-PC und Akkulaufzeiten befänden sich bestenfalls im einstelligen Minutenbereich. oO
Mein Vorschlag:
Einen TextWatcher nutzen und nur dann speichern, wenn Bedarf besteht, also wenn Änderungen am Text vorliegen. Oder einfach in onPause (dieser Aufruf wird vom System garantiert und wird IMMER ausgeführt).
Wie man nun die Daten speichert (SharedPreferences oder in einer Datenbank), das kommt auf Inhalt und vor allem Menge, sowie Häufigkeit der Zugriffe an. Bei größeren Datensätzen (vielleicht 100 oder mehr? kA...) kommt man um eine Datenbank nicht herum ohne dass es zu einem katastrophalem Durcheinander im Code und den Datensätzen kommt.
Vielleicht mal ganz am Rande: Warum nicht erstmal mit Java klar kommen, bevor man in Android einsteigt? Ihr tut euch meiner Meinung nach selbst keinen Gefallen, da die Lernkurve in Java deutlich steiler ist als in Android mit seinen 1000 kleinen Sonderfällen.