Autore Topic: Mantenere attiva una applicazione  (Letto 1316 volte)

Offline systemgvp

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Ideos
  • Play Store ID:
    systemgvp
  • Sistema operativo:
    Windows 7
Mantenere attiva una applicazione
« il: 25 Giugno 2013, 09:09:03 CEST »
0
Salve,

è da un po' che programmo su android mettendo sempre da parte questo problema, che ora mi diviene rilevante. In pratica io ho un'activity, ma quando ad esempio arriva una chiamata, questa va in secondo piano e di conseguenza non si vede più. Quando poi riclicco sull'icona dell'app, questa ricomincia il suo ciclo dall'inizio, mentre io ho notato che la maggior parte delle app, quando passano in secondo piano e vengono poi riaperte, continuano da dove avevano lasciato o non hanno mai interrotto i loro lavori.

come si fa a far si che se l'applicazione passa in secondo piano questa continui tranquillamente a lavorare? in pratica devo far si che la mia app, che sfrutta il GPS, continui a lavorare anche quando lo schermo viene spento e appena si riclicchi sull'icona, questa continui a mostrare il proprio lavoro senza riavviarsi?

Post unito: 25 Giugno 2013, 10:14:55 CEST
IN PARTE ho risolto con:

Codice (Java): [Seleziona]
private class OperazioniInBackground extends AsyncTask<String, String, String> {
        // I tre tipi da dichiarare sono relativamente (in questo caso usiamo solo stringhe)
        // il parametro in entrata di doInBackground  (quando chiamiamo execute passiamo una stringa)
        // il paramentro in entrata di onProgressUpdate (dati che vogliamo mostrare all' utente -opzionale,potremmo usare variabili globali-)
        // il parametro in entrata di onPostExecure (una volta finito il task, potremmo voler mostrare un risultato all'utente)
        // nel caso non volessimo usare parametri di alcun genere tipizziamo con Void,Void,Void (passeremo poi dei null come parametri)

                @Override
                protected String doInBackground(String... params) {
                       
                        //operazioni passate a onProgressUpdate
                        Random rand = new Random();
                        for (int i = 0; i<1000000000; i++) { publishProgress(String.valueOf(rand.nextInt(100)), String.valueOf(i)); }
                       
                        // stringa passata a onPostExecute
                        return "Finish !";
                }
               
               

                @Override
                protected void onProgressUpdate(String... values) {
                        //inserire qui quello da mostrare in continuo
                        BarraStileDiGuida.setProgress(Integer.valueOf(values[0]));
                        textView1.setText(values[1]);
               
                }

                @Override
                protected void onPostExecute(String result) {
                        //inserire qui quello da mostrare penso alla fine
                        textView1.setText(result);
                }

        }

//--------------

OperazioniInBackground task = new OperazioniInBackground();
                task.execute("");

però ciò funziona SOLO se l'activity è quella principale (ovvero la prima lanciata), che non è il caso mio, perché prima l'utente deve effettuare delle scelte. In pratica mi funziona solo se si spegne lo schermo, ma non se l'app va in secondo piano. come posso risolvere?
« Ultima modifica: 25 Giugno 2013, 10:15:37 CEST da systemgvp »