Собственные цифровые часы с данными и временем.продуктивно - PullRequest
0 голосов
/ 12 декабря 2010

Вчера я запрограммировал собственные цифровые часы. Я использовал блог Google: http://android -developers.blogspot.com / 2007/11 / stitch-in-time.html для помощи.

Следующий код является результатом.

Мой вопрос. Это эффективный способ, чтобы обновить дескриптор с помощью 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);
            }
} 

Спасибо за ваши комментарии.

Felix

1 Ответ

0 голосов
/ 13 декабря 2010

Имейте в виду следующее высказывание: «Преждевременная оптимизация - корень всего зла». Другими словами, если оно не сломано, не исправляйте его.Когда вы пишете приложение для часов, небольшая оптимизация производительности вряд ли будет иметь большое значение для взаимодействия с пользователем.

  1. Я не вижу проблем с использованием SystemClock.uptimeMillis() в том виде, в котором вы его используете,Слушатели, как правило, предназначены для событий, которые происходят нерегулярно, а не для рутинных (основанных на времени) событий.
  2. Вероятно, было бы очень, очень и очень немного быстрее вручную проанализировать время из System.currentTimeMillis(), посколькуменьше задействованных вызовов функций и меньшее выделение памяти (у обоих есть некоторые издержки, особенно в Java), однако экономия будет крошечной.
...