Autore Topic: Uso di Thread in una activity  (Letto 435 volte)

Offline Friz02

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3 neo Samsung
  • Sistema operativo:
    windows 7
Uso di Thread in una activity
« il: 26 Agosto 2014, 15:49:46 CEST »
0
Ciao a tutti, ho un problema con l'uso del thread in una activity.
Ad esempio sono nell'activity "MainActivity" e tramite il click di un button passo  all'activity "MainActivity3" che dovrebbe visualizzare il "layout3": quello che segue è il codice relativo all'activity "MainActivity3".
Codice (Java): [Seleziona]
public class MainActivity3 extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout3);

        String toast = "....works in progress....";
        Toast.makeText(getApplicationContext(), toast, Toast.LENGTH_LONG ).show();

       try {
            Thread.sleep(5000);
        }
        catch (InterruptedException e){
            Log.d("TAG", "interrotto");
        }
       
        Intent in = new Intent(this, MainActivity2.class);
        startActivity(in);
    }
}

In teoria dovrebbe visualizzarsi il layout "layout3" (e il toast) per 5 secondi e poi, quando il Thread si risveglia, passare al layout dell'activity "MainActivity2" con l'intent e startActivity(in).
In realta' non visualizza mai il layout "layout3" ( e nemmeno il toast) ma resta nel layout iniziale dell'activity "MainActivity" per 5 secondi e poi visualizza il layout dell'activity "MainActivity2".
Non mi pare dovrebbe andar così.....probabilmente mi sfugge qualcosa.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Uso di Thread in una activity
« Risposta #1 il: 26 Agosto 2014, 15:59:28 CEST »
0
Non mi pare dovrebbe andar così.....probabilmente mi sfugge qualcosa.

L'errore principale è che la onCreate() non è come il main() di un programma java o c. La onCreate() viene richiamata quando la nuova activity è in corso di creazione, creazione che non avviene sino a che non si esce dalla onCreate. Ecco perchè il tuo codice non funziona: stai solo ritardando l'esecuzione della onCreate.

E più in generale non si usa MAI Thread.sleep() per generare dei ritardi.

Quello che dovresti fare è par partire dentro la OnCreate un AlarmManager, impostando a +5 secondi, allo scadere del quale avvii la successiva activity.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Friz02

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3 neo Samsung
  • Sistema operativo:
    windows 7
Re:Uso di Thread in una activity
« Risposta #2 il: 26 Agosto 2014, 17:29:47 CEST »
0
La onCreate() viene richiamata quando la nuova activity è in corso di creazione, creazione che non avviene sino a che non si esce dalla onCreate.
Quindi onCreate() non esegue le istruzioni in sequenza? prima legge tutto il contenuto e poi procede con l'esecuzione (cioè con la creazione dell'activity)....se però trova un Thread.sleep(5000) non esegue niente per 5 sec.... funziona così?...in ogni caso mi par di capire che Thread.sleep(5000) è la prima istruzione che esegue onCreate().

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Uso di Thread in una activity
« Risposta #3 il: 26 Agosto 2014, 18:15:12 CEST »
0
Android ha un limite nel quale la app crasha appositamente te. Credo che fosse proprio 5 secondi il limite. In ogni casa thread.sleep non viene mai usato cosi

Offline Friz02

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3 neo Samsung
  • Sistema operativo:
    windows 7
Re:Uso di Thread in una activity
« Risposta #4 il: 27 Agosto 2014, 18:05:21 CEST »
0
Ok grazie ad entrambi....comunque con un AlarmManager non saprei neanche da dove cominciare.....