Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Applicazione in background android java

    Buonasera, sapete come si può salvare un mio dato a scelta quando l'applicazione viene arrestata?

    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    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

  3. #3
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    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).

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    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

  5. #5
    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.

  6. #6
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    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.
    Trovata esattamente dove dici tu in file XML. Grazie e scusa signfra per l'intrusione, può essere che in futuro possa servire anche a te saperlo
    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).

  7. #7
    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?

    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);
    }
    il servizio del processo la attivo in questo modo in Mainactivity , però quando la chiudo l'app il processo viene chiuso.

    codice:
    TutorialService rec2=new TutorialService();
    rec2.onCreate();

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.