2010-09-05 8 views
1

i trouvé ce code pour minuteries Android, public class MyActivity étend l'activité {Android Timers Problème

private Timer myTimer; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main); 

    myTimer = new Timer(); 
    myTimer.schedule(new TimerTask() { 
     @Override 
     public void run() { 
      TimerMethod(); 
     } 

    }, 0, 1000); 
} 

private void TimerMethod() 
{ 
    //This method is called directly by the timer 
    //and runs in the same thread as the timer. 

    //We call the method that will work with the UI 
    //through the runOnUiThread method. 
    this.runOnUiThread(Timer_Tick); 
} 

private Runnable Timer_Tick = new Runnable() { 
    public void run() { 

    //This method runs in the same thread as the UI.    

    //Do something to the UI thread here 

    } 
}; 

} Je dois comprendre une chose ... les commentaires disent que cette méthode fonctionne dans le même fil Comme l'Ui, cela signifie que cette méthode continuera à fonctionner même si l'écran est éteint ou si l'activité est poussée vers l'arrière-plan, par exemple. en cas d'appel téléphonique entrant?

Répondre

0

Non, tout cela signifie que cette méthode particulière est exécutée dans le même contexte de thread que l'interface utilisateur de cette ACTIVITÉ.

Cela signifie que oui, il fonctionnera en arrière-plan comme prévu. (Tant que votre activité est en cours d'exécution ce qui n'est pas toujours une garantie.) Si un utilisateur appuie à la maison ou démarre une autre application, le système d'exploitation peut tuer votre activité à tout moment. écran dims que le code particulier sera en mesure de modifier l'interface utilisateur via des choses comme les toasts, ou son interface utilisateur de l'activité

En théorie, il ne serait pas mal de tester ces choses vous-même