2010-12-12 50 views
0

昨天我編寫了一個自己的數字時鐘。我使用谷歌博客:http://android-developers.blogspot.com/2007/11/stitch-in-time.html尋求幫助。擁有數據和時間的數字時鐘。有效

下面的代碼是resulat。

我的問題。通過SystemClock.uptimeMillis()更新句柄是否是一種有效的方法?我認爲最好是像聽衆那樣按時改變。

第二個問題。處理器使用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

此代碼正常工作。適合需要簡單壓光機和時鐘的所有人。 – FelixA 2010-12-13 07:11:23

+0

對於誰更感興趣的更簡單的時鐘可以看看這裏:http://www.droiddraw.org/widgetguide.html(模擬時鐘,數字時鐘) – FelixA 2010-12-13 07:14:52

回答

0

請記住這句話:「過早的優化是所有罪惡的根源」。換句話說,如果不破,不解決它。在編寫時鐘應用程序時,小的性能優化不會對用戶體驗產生重大影響。

  1. 我沒有看到使用SystemClock.uptimeMillis()您使用它的方式的問題。聽衆通常是針對不規則地發生的事件,而不是常規(基於時間的)事件。
  2. 手動解析從System.currentTimeMillis()開始的時間可能會非常非常快,因爲涉及的函數調用較少,內存分配較少(兩者都有一些開銷,特別是在Java中),但節省會很小。
+0

非常感謝!乾杯費利克斯 – FelixA 2010-12-13 07:13:13