2010-12-12 8 views
0

Gestern habe ich eine eigene digitale Uhr programmiert. Ich habe den Google Blog verwendet: http://android-developers.blogspot.com/2007/11/stitch-in-time.html für Hilfe.Eigene digitale Uhr mit Daten und Zeit. effizient

Der folgende Code ist das Resulat.

Meine Frage. Ist es eine effiziente Möglichkeit, das Handle von SystemClock.uptimeMillis() zu aktualisieren? Ich dachte, es wäre besser, etwas wie ein Zuhörer zu haben, um rechtzeitig zu wechseln.

Zweite Frage. Ist es für den Prozessor effektiv, den DateFormat.getTimeInstance() Befehl zu verwenden, um die Zeit zu bekommen? Ich benutze es, weil ich nicht weiß, wie man die tatsächliche Zeit von System.currentTimeMillis() berechnet.

public class TextClock extends Activity { 

    private TextView mTimeLabel; 
    private Handler mHandler = new Handler(); 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      mTimeLabel = (TextView) findViewById(R.id.timeLabel); 
    } 

    private Runnable mUpdateTimeTask = new Runnable() { 
       public void run() { 
        String currentTimeString = DateFormat.getTimeInstance().format(new Date()); 
        String currentDateString = DateFormat.getDateInstance().format(new Date()); 
        mTimeLabel.setText(currentDateString + "\n" + currentTimeString); 

        mHandler.postAtTime(this, (SystemClock.uptimeMillis() + 1000)); 
       } 
      }; 

     @Override 
      protected void onStart() 
      { 
        super.onPause(); 
      mHandler.removeCallbacks(mUpdateTimeTask); 
      mHandler.postDelayed(mUpdateTimeTask, 100); 
      } 

      @Override 
      protected void onPause() 
      { 
        super.onPause(); 
        mHandler.removeCallbacks(mUpdateTimeTask); 
      } 
} 

Vielen Dank für Ihre Kommentare.

Felix

+0

dieser Code funktioniert gut. für alle, die einen einfachen Kalender brauchen. – FelixA

+0

für alle, die an einer einfacheren Uhr interessiert sind, können Sie hier nachschauen: http://www.droiddraw.org/widgetguide.html (Analoguhr, Digitaluhr) – FelixA

Antwort

0

Denken Sie daran, dieses Sprichwort: „Vorzeitige Optimierung ist die Wurzel aller Übel“ Mit anderen Worten, wenn es nicht kaputt ist, repariere es nicht. Wenn Sie eine Clock-Anwendung schreiben, ist es unwahrscheinlich, dass kleine Leistungsoptimierungen für die Benutzerfreundlichkeit einen großen Unterschied ausmachen.

  1. Ich sehe kein Problem mit der Verwendung von SystemClock.uptimeMillis() die Art, wie Sie es verwenden. Listener sind im Allgemeinen für Ereignisse gedacht, die unregelmäßig statt routinemäßig (zeitbasiert) auftreten.
  2. Es wäre wahrscheinlich sehr, sehr, sehr wenig schneller, die Zeit manuell von System.currentTimeMillis() zu analysieren, weil es weniger Funktionsaufrufe und weniger Speicherzuweisung (die vor allem in Java einige Overhead haben), aber die Einsparungen wäre winzig.
+0

Vielen Dank! Prost Felix – FelixA