Как обновляется формат времени для Android?

Я использую пользовательский RemoteView для AndroidNotification, и я хотел бы имитировать поведение системы.

Как Android обновляет формат времени уведомления – они когда-либо меняются после их установки? Как я могу имитировать это поведение?

Solutions Collecting From Web of "Как обновляется формат времени для Android?"

Я не уверен, что вы все еще ищете ответы, учитывая, что вы сами предоставили их. Однако, если вы хотите достичь своей первоначальной цели, вы, вероятно, захотите

  • Перестройте RemoteView каждый раз, когда изменяется время (это просто проще)
  • Настройте BroadcastReceiver, чтобы поймать тики часов, чтобы вы знали, когда изменилось время.

Итак, некоторый код немного напоминает это:

class MyCleverThing extends Service (say) { // Your stuff here private static IntentFilter timeChangeIntentFilter; static { timeChangeIntentFilter = new IntentFilter(); timeChangeIntentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED); timeChangeIntentFilter.addAction(Intent.ACTION_TIME_CHANGED); } // Somewhere in onCreate or equivalent to set up the receiver registerReceiver(timeChangedReceiver, timeChangeIntentFilter); // The actual receiver private final BroadcastReceiver timeChangedReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (action.equals(Intent.ACTION_TIME_CHANGED) || action.equals(Intent.ACTION_TIMEZONE_CHANGED)) { updateWidgets(); // Your code to rebuild the remoteViews or whatever } } }; 

Я мало знаю о формате времени уведомления, но если вы хотите подражать их поведению, следует взглянуть на класс DateUtils , особенно форматSameDayTime, который, как я думаю, делает то, что вы описали.

Невозможно обновить уведомление после добавления, если .notify вызывается снова с тем же идентификатором.

Если вы используете отметку времени, лучше использовать собственный Notification NotificationCompat.Builder без использования RemoteView.

Каждый раз, когда вы обновляете свое уведомление, делайте что-то простое (24 часа) …

 public void updateNotifTime(RemoteViews customNotifView){ Date currentTime = new Date(); int mins = currentTime.getMinutes(); String minString = ""; if(mins<10){ minString = "0"; } minString += mins; customNotifView.setTextViewText(R.id.time, currentTime.getHours()+":"+minString); }