Попытка выяснить это на некоторое время. У меня есть приложение, которое запускает обратный отсчет в отдельном service
, который вызывает startsForeground
, отображая уведомление. Я запустить службу обратного отсчета с помощью кнопки:Продолжайте обновлять интерфейс Android от службы, когда активность закрыта/перезапущена
Intent i = new Intent(getApplicationContext(), PomoService.class);
i.putExtra("EXTRA_MESSENGER", new Messenger(handler));
startService(i);
и я обновить пользовательский интерфейс с handler
, который получил данные расслоение рассказывающие сколько миллисекунд остались в обратном отсчете, посланном через сообщение в методе onTick()
:
Messenger messenger = (Messenger)extras.get("EXTRA_MESSENGER");
Message msg = new Message();
Bundle b = new Bundle();
b.putLong("remainingTime", millisUntilFinished);
msg.setData(b);
try {
messenger.send(msg);
} catch (RemoteException e) {
Log.i("error", "error");
}
И в деятельности:
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
long sentTime = msg.getData().getLong("remainingTime");
textCountdownMin.setText(String.format("%02d", (sentTime/1000)/60));
textCountdownSec.setText(":" + String.format("%02d", (sentTime/1000)%60));
}
};
вся установка работает отлично, единственная проблема заключается в том, что если пользователь попадает в спину или отскакивает приложение из списка последних приложений, а затем снова открывает его либо из ящика, либо из текущего уведомления, текст больше не обновляется. Обратный отсчет все еще продолжается, так как я вижу его как из уведомления, которое все еще отображается, так и из-за того, что я использую AlarmManager для разбухания экрана, и это срабатывает правильно.
Любая подсказка о том, какие меры я должен предпринять?