Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] scheduleAtFixedRate

arrêt sur actualisation Widget

Sujet résolu
    6 mai 2012 à 19:43:05

    Bonjour,
    le programme ANDROID ci dessous fonctionne bien si je ne demande pas l'écriture du WIDGET type VIEW label.
    le Log.i affiche bien Message 1,Message 2, Message 3, etc toute les 4 secondes
    si je demande l'ecriture du label, le runnable "Affichage" s'arrête après avoir affiché "test ecriture" 1 fois dans le label.

    comment faire pour maintenir l'activité du Thread toute les 4 seconde ?

    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.TimeUnit;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.TextView;
    
    public class TestBipActivity extends Activity {
    	/** Called when the activity is first created. */
    	private static final String TAG = "Test";
    	public TextView label;
    	public int i=0;
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    
    		label = (TextView) findViewById(R.id.label);
    
    		ScheduledExecutorService execute = Executors.newSingleThreadScheduledExecutor();
    		//Execute MonRunnable toutes les secondes
    		execute.scheduleAtFixedRate(new Affichage(), 0, 4, TimeUnit.SECONDS);  
    	}
    
    	//public void pourLectureMessages()   {
    	public class Affichage implements Runnable {
    		@Override
    		public void run(){
    			Log.i(TAG, "Message : " + i);
    			label.setText("test écriture : " + i );
    			i++;
    		}
    	}
    


    Merci de votre aide

    ****************************************************************

    J'ai fini par trouver la solution qui était dans le "handler"

    package com.test.android.com;
    
    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.TimeUnit;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.util.Log;
    import android.widget.TextView;
    
    public class TestBipActivity extends Activity {
    	/** Called when the activity is first created. */
    	private static final String TAG = "Test";
    	public TextView label;
    	public int i = 0;
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    
    		label = (TextView) findViewById(R.id.label);
    
    		ScheduledExecutorService execute = Executors
    				.newSingleThreadScheduledExecutor();
    		// Execute MonRunnable toutes les secondes
    		execute.scheduleAtFixedRate(new Affichage(), 0, 4, TimeUnit.SECONDS);
    	}
    
    	// public void pourLectureMessages() {
    	public class Affichage implements Runnable {
    		@Override
    		public void run() {
    			Log.e(TAG, "Message : " + i);
    			// label.setText("test écriture : " + i );
    			i++;
    			handler.sendEmptyMessage(0);
    		}
    	}
    
    	private Handler handler = new Handler() {
    		public void handleMessage(android.os.Message msg) {
    			if (msg.what == 0) {
    				label.setText("test écriture : " + i);
    			}
    		};
    	};
    }
    
    • Partager sur Facebook
    • Partager sur Twitter

    [Android] scheduleAtFixedRate

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown