Autore Topic: Avviare un AsyncTask all'interno di un altro AsyncTask  (Letto 379 volte)

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
Avviare un AsyncTask all'interno di un altro AsyncTask
« il: 02 Agosto 2015, 09:58:57 CEST »
0
Buongiorno ragazzi, ho un problema parecchio fastidioso con i thread. In pratica devo far partire un Thread che recupera i dati gps, alla fine di questo thread (onPostExecute()) devo far avviare un altro thread che permetta di salvare dei dati all'interno di un DataBase. Spero di essere stato chiaro, comunque sia vi posto il codice che utilizzo:

Codice per salvare all'interno del DB
Codice: [Seleziona]
private class SaveDB extends AsyncTask<Void, Integer, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();

        }

        @Override
        protected String doInBackground(Void... arg0) {

            db.open();
            db.insertPhoto(pictureFile.getAbsolutePath(), copyActualTag, actualStar, locality);
            db.close();
            return "Salvato nel DATABASE";
        }


        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            Toast.makeText(CameraActivity.this, result, Toast.LENGTH_SHORT).show();
        }

    }

Codice per recuperare le coordinate gps

Codice: [Seleziona]
private class GetLocation extends AsyncTask<Void, Integer, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();

        }

        @Override
        protected String doInBackground(Void... arg0) {
            getLocation();


            return "Lavoro Terminato!";
        }

        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);

        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            new SaveDB().execute();
        }

    }

questo è l'istruzione che viene eseguita quando un alertDialog viene chiuso:

Codice: [Seleziona]
new GetLocation().execute();
È corretto il mio procedimento o sbaglio qualcosa?

Grazie mille anticipatamente! e buona domenica