1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. robthemobb, 12.10.2010 #1
    robthemobb

    robthemobb Threadstarter Neuer Benutzer

    Hallo Zusammen,

    ich habe mir eben bzgl. Handler Gedanken gemacht, ob und wie ich diese sinnvoll nutzen kann. Dazu habe ich mir erst einmal ein kleines, eher sinnloses, Beispiel geschrieben. (Eine Klasse addiert random-Zahlen und via Handler Rückgabe, ob ==, < oder > Zero) Dies funktioniert auch!

    Eventuell könnt ihr euch das mal anschauen und euren Gedanken freien Lauf lassen. Mir geht es darum, zu verstehen, wann und wie ich Handler nutze.

    Ganz konkret habe ich vor so einen Fahrradcomputer zu basteln. Dieser besteht momentan aus 2 Tabs (Map / Daten). Im Daten-Tab sollen dann die GPS Coordinaten aus dem MapTab dazu benutzt werden, Geschwindigkeiten zu berechnen. Das wäre doch sinnvoll, hier handler zu benutzen, oder!?

    Gruß, Rob

    Code:
    package test.test;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.widget.TextView;
     
    public class Main extends Activity {
    	
    	private Adder adder;
    	public static final int RESULT = 3;
    	
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    	}
    	
    	public void onStart() {
    		super.onStart();
    		setUpAdder();
    		adder.setResult();
    	}
    	
    	private void setUpAdder() {
    		try {
    			adder = new Adder(this, handler);
    		} catch (ExceptionInInitializerError eiie) { }
    	}
    	
    	private final Handler handler = new Handler() {
    		public void handleMessage(Message msg) {
    			switch(msg.what) {
    				case RESULT:
    					switch(msg.arg1) {
    						case Adder.EQUAL_ZERO:
    							((TextView) findViewById(R.id.result)).setText("Result is Zero");
    							break;
    						case Adder.BIGGER_ZERO:
    							((TextView) findViewById(R.id.result)).setText("Result is > Zero");
    							break;
    						case Adder.LESS_ZERO:
    							((TextView) findViewById(R.id.result)).setText("Result is < Zero");
    							break;
    						default:
    							break;
    					}
    			}
    		}
    	};
    }
    Code:
    package test.test;
    
    import android.content.Context;
    import android.os.Handler;
    
    public class Adder {
    	
    	private final Handler handler;
    
    	public static final int EQUAL_ZERO = 0;
    	public static final int BIGGER_ZERO = 1;
    	public static final int LESS_ZERO = -1;
    	
    	private int result;
    	
    	public Adder(Context c, Handler h) { handler = h; }
    	
    	public void setResult() {
    		int a = (int) (Math.random() * 10);
    		int b = (int) (Math.random() * -10);
    		
    		if(a+b < 0) {
    			result = -1;
    		} else if(a+b == 0) {
    			result = 0;
    		} else {
    			result = 1;
    		}
    		
    		handler.obtainMessage(Main.RESULT, result, 0).sendToTarget();
    	}
    }
     
  2. manu, 25.10.2010 #2
    manu

    manu Fortgeschrittenes Mitglied

    Handler sind ganz nützlich um aus einem Thread den Befehl zu geben die GUI zu ändern. Ist aus dem Thread nicht möglich.
    Zudem eignen sie sich um Befehle in 10s auszuführen. Man kann das natürlich auch mit "Runnables" machen.
    Es gibt recht viele Einsatzmöglichkeiten.
     

Diese Seite empfehlen