Buonasera, sapete come si può salvare un mio dato a scelta quando l'applicazione viene arrestata?
Grazie
Buonasera, sapete come si può salvare un mio dato a scelta quando l'applicazione viene arrestata?
Grazie
Perchè il titolo è "Applicazione in background" se la discussione verte sul salvataggio di dati in chiusura dell'app?
Ad ogni modo, esistono diversi modi per "salvare informazioni" all'interno di una App Android... il più semplice consiste nell'usare le SharedPreferences (un meccanismo "nativo" di Android).
Va ridefinito il metodo onPause() dell'Activity (perchè tale metodo è il primo che viene chiamato appena prima della chiusura dell'Activity stessa... poi possono essere chiamati onStop() e onDestroy(), ma da quel che so possono anche non venire chiamati se è il sistema a killare l'Activity, quindi onPause() è sicuramente il posto migliore in cui fare l'operazione) e al suo interno si deve ottenere l'oggetto SharedPreferences.
codice:@Override public void onPause() { // Ottengo l'oggetto SharedPreferences che io decido di chiamare "pippo", di tipo privato SharedPreferences pref = getSharedPreferences("pippo", MODE_PRIVATE); //Ottengo l'editor delle SharedPreferences Editor editor = pref.edit(); // Ci scrivo dentro il valore String che voglio salvare (la mia variabile "pippoStr") editor.putString("miaStringa", pippoStr); ... // Ci posso scrivere tutte le cose che voglio // Effettuo il commit delle modifiche editor.commit(); }
Le SharedPreferences sono un sistema semplice da usare: memorizzano una serie di coppie chiave -> valore per qualunque tipo "primitivo" più stringhe e Set<String>.
Le SharedPreferences possono essere di diverse tipologie: l'esempio che ho fatto io ottiene (e crea se non esiste) una SharedPreference chiamata "pippo" di tipo "privato" (accessibile, cioè, solo da quella Activity). La documentazione è più che esaustiva su queste cose.
Per andare a ripescare i dati al successivo avvio della Activity è sufficiente ri-ottenere l'oggetto SharedPreferences e tramite i relativi metodi getter ottenere le informazioni che si sono precedentemente salvate in esso.
Ciao.![]()
Ultima modifica di LeleFT; 13-12-2016 a 18:06
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Mi intrometto rimanendo credo IT.
Anche io uso le SharedPrefences, sai dove viene memorizzato chiave/valore?
Nella cartella data/app/applicazione non trovo niente
grazie
Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).
Non ho mai approfondito la cosa, ma dovrebbero essere memorizzate all'interno di file XML in
/data/data/<tuo_package>/shared_prefs/<nome_pref>
Credo serva un dispositivo rootato per poter andare a trafficare dentro la directory /data (io, ad esempio, con un app che mi emula un terminale, nel mio cellulare non rootato non riesco ad accedere ai suoi contenuti, la vedo, ma non ho i permessi per sfogliarla)
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Ciao e grazie mi sei stato di grande aiuto, ti spiego meglio quello che vorrei fare. Dovrei creare un app android che oltre ad avere un'interfaccia grafica e che quindi alla chiusura e all'apertura salvi dei dati, dovrebbe lavorare anche da chiusa, in background monitorando lo stato di altre app, se vengono aperte o chiuse per tenere i tempi di esecuzione di queste app controllate. Inoltre vorrei tener traccia delle volte in cui lo schermo va in standby, qualsiasi cosa si stia facendo, e tener traccia del tempo totale di stanby e\o di attivit� dello schermo (per quest'ultima cosa android nelle impostazioni della batteria tiene il tempo di attivit� totale dello schermo, ma non so da dove prendere questo tempo ne come salvarlo per poterlo usare)..grazie in anticipo.
Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).
Salve, ho eseguito questa guida per creare un processo in background.
http://blog.rhesoft.com/2016/03/14/t...ndroid-studio/
per eseguire un servizio in background si fà in questo modo?
il servizio del processo la attivo in questo modo in Mainactivity , però quando la chiudo l'app il processo viene chiuso.codice:@Override public void onCreate() { // To avoid cpu-blocking, we create a background handler to run our service HandlerThread thread = new HandlerThread("TutorialService", Process.THREAD_PRIORITY_BACKGROUND); // start the new handler thread thread.start(); mServiceLooper = thread.getLooper(); // start the service using the background handler mServiceHandler = new ServiceHandler(mServiceLooper); }
codice:TutorialService rec2=new TutorialService(); rec2.onCreate();