2010-12-12 14 views
0

昨日、私は自分のデジタル時計をプログラムします。私はGoogleのブログ:http://android-developers.blogspot.com/2007/11/stitch-in-time.htmlを利用しました。データと時間のある独自のデジタル時計。効率的

次のコードが参考になります。

私の質問。 SystemClock.uptimeMillis()でハンドルを更新するのは効率的な方法ですか?私は時間の変化のためにリスナーのようなものを習う方が良いと思った。

2番目の質問です。プロセッサがDateFormat.getTimeInstance()コマンドを使用して時間を取得するのは間違っていますか? System.currentTimeMillis()から実際の時刻を計算する方法がわからないため、私はそれを使用します。

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); 
      } 
} 

ご意見ありがとうございます。それが壊れていない場合は、それを修正していない、つまり、「時期尚早の最適化は諸悪の根源である」:フェリックス

+0

このコードは正常に動作します。シンプルなカレンダーと時計が必要な皆さん。 http://www.droiddraw.org/widgetguide.html(アナログ時計、デジタル時計) – FelixA

+0

はこちらをご覧持つことができます!乾杯フェリックス – FelixA

答えて

0

は心の中でこの言葉を保管してください。クロックアプリケーションを作成する場合、小さなパフォーマンスの最適化はユーザーエクスペリエンスに大きな違いをもたらすことはありません。

  1. SystemClock.uptimeMillis()の使用方法に問題はありません。リスナーは、一般的に、ルーチン(時間ベースの)イベントではなく、不規則に発生するイベントに対して使用されます。
  2. System.currentTimeMillis()から時間を手動で解析するのは非常に、非常にわずかに速いでしょう。なぜなら、必要な関数呼び出しが少なくなり、メモリ割り当てが少なくなるからです(両方とも、特にJavaではいくらかのオーバーヘッドがあります)小さいだろう。
+0

どうもありがとう:よりシンプルな時計に興味を持っている皆のため – FelixA

関連する問題