web-dev-qa-db-fra.com

afficher les données toutes les 10 secondes sous Android

Je dois afficher des données toutes les 10 secondes. Quelqu'un peut-il me dire comment faire cela?

29
Farha Ansari

Il existe un autre moyen que vous pouvez utiliser pour mettre à jour l'interface utilisateur sur un intervalle de temps spécifique. Les deux options ci-dessus sont correctes, mais cela dépend de la situation. Vous pouvez utiliser d'autres méthodes pour mettre à jour l'interface utilisateur sur un intervalle de temps spécifique.

Commencez par déclarer une variable globale pour que Handler mette à jour le contrôle d'interface utilisateur à partir de Thread, comme ci-dessous.

Handler mHandler = new Handler();

Créez maintenant un thread et utilisez la boucle while pour effectuer la tâche périodiquement en utilisant la méthode de veille du thread.

 new Thread(new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            while (true) {
                try {
                    Thread.sleep(10000);
                    mHandler.post(new Runnable() {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            // Write your code here to update the UI.
                        }
                    });
                } catch (Exception e) {
                    // TODO: handle exception
                }
            }
        }
    }).start();
59
Rahul Patel

La chose la plus simple à faire est probablement la suivante:

while(needToDisplayData)
{
    displayData(); // display the data
    Thread.sleep(10000); // sleep for 10 seconds
}

Alternativement, vous pouvez utiliser une minuterie:

int delay = 1000; // delay for 1 sec. 
int period = 10000; // repeat every 10 sec. 
Timer timer = new Timer(); 
timer.scheduleAtFixedRate(new TimerTask() 
    { 
        public void run() 
        { 
            displayData();  // display the data
        } 
    }, delay, period); 
11
Kiril

Il y a aussi une autre manière en utilisant Handler

final int intervalTime = 10000; // 10 sec
Handler handler = new Handler();
handler.postDelayed(new Runnable()  {   
 @Override
 public void run() {
    //Display Data here
   }
 }, intervalTime);
7
Sunil Dangi

Andrahu était sur la bonne voie en définissant un gestionnaire. Si un gestionnaire appelle vos fonctions de mise à jour, vous pouvez simplement retarder le message envoyé au gestionnaire pendant 10 secondes. 

De cette façon, vous n'avez pas besoin de démarrer votre propre thread ou quelque chose du genre qui conduirait à des erreurs étranges, des problèmes de débogage et de maintenance.

Il suffit d'appeler:

 Handler myHandler = new MyUpdateHandler(GUI to refresh); <- You need to define a own handler that simply calls a update function on your gui.
 myHandler.sendMessageDelayed(message, 10000);

Maintenant, votre fonction handleMessage sera appelée après 10 secondes. Vous pouvez simplement envoyer un autre message dans votre fonction de mise à jour, ce qui provoque le cycle complet de s'exécuter encore et encore.

7
Janusz

Il existe un moyen simple d'afficher des données toutes les 10 secondes.

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

public void ActionStartsHere() {
  againStartGPSAndSendFile();
}

public void againStartGPSAndSendFile() {
   new CountDownTimer(11000,10000) {
        @Override
        public void onTick(long millisUntilFinished) {
           // Display Data by Every Ten Second  
        }

        @Override
        public void onFinish() {
            ActionStartsHere();
        }
    }.start();
}   
4
Sunil Dangi

Toutes les 10 secondes, l'écran de votre application ou votre activité est actualisé automatiquement

créer à l'intérieur de la méthode onCreate () j'ai essayé ce code fonctionnera pour moi 

Thread t = new Thread() {
@Override
public void run() {
try {
  while (!isInterrupted()) {
    Thread.sleep(1000);
    runOnUiThread(new Runnable() {
      @Override
      public void run() {            
       //CALL ANY METHOD OR ANY URL OR FUNCTION or any view
      }
    });
  }
} catch (InterruptedException e) {
}
}
};t.start();
0
Satheeshkumar Somu