Обновление времени и даты вторым в Android

Я хочу отображать время и дату в TextView в реальном времени (обновляя его поминутно). В настоящее время у меня это есть. Это лучший способ сделать это, учитывая использование памяти и лучшую практику Android? (Примечание: DateFormatjava.text.DateFormat )

 private Thread dtThread; public void onCreate(Bundle savedInstanceState) { ... getDateAndTime(); } private void getDateAndTime() { dtThread = new Thread( new Runnable() { @Override public void run() { Log.d(TAG, "D/T thread started"); while (!Thread.currentThread().isInterrupted()) { try { update(); Thread.sleep(1000); } catch (InterruptedException e) { Log.d(TAG, "D/T thread interrupted"); } } } public void update() { runOnUiThread( new Runnable() { @Override public void run() { Date d = new Date(); String time = DateFormat.getTimeInstance(DateFormat.MEDIUM).format(d); String date = DateFormat.getDateInstance(DateFormat.LONG).format(d); TextView timeView = (TextView) findViewById(R.id.textStartTime); TextView dateView = (TextView) findViewById(R.id.textStartDate); timeView.setText(time); dateView.setText(date); } }); } }); dtThread.start(); } protected void onPause() { super.onPause(); dtThread.interrupt(); dtThread = null; } protected void onResume() { super.onResume(); getDateAndTime(); } 

Я бы использовал Runnable и отправил его с задержкой на обработчик.

 public class ClockActivity extends Activity { private SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss"); private TextView mClock; private boolean mActive; private final Handler mHandler; private final Runnable mRunnable = new Runnable() { public void run() { if (mActive) { if (mClock != null) { mClock.setText(getTime()); } mHandler.postDelayed(mRunnable, 1000); } } }; public ClockActivity() { mHandler = new Handler(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mClock = (TextView) findViewById(R.id.clock_textview); startClock(); } private String getTime() { return sdf.format(new Date(System.currentTimeMillis())); } private void startClock() { mActive = true; mHandler.post(mRunnable); } } 

Вероятно, вы можете использовать обработчик для публикации обновлений в потоке пользовательского интерфейса. Ознакомьтесь с этими рекомендациями по обновлению таймера

http://developer.android.com/resources/articles/timed-ui-updates.html

Вместо того, чтобы разрабатывать свой собственный таймер для обработки, я рекомендую использовать список получателей широковещательной рассылки для этого намеренного вещательного пакета, отправленного каждый минус: http://developer.android.com/reference/android/content/Intent.html#ACTION_TIME_TICK

Если вам нужен пример кода, как это сделать, сообщите мне.

Intereting Posts