У меня есть диалоговое окно, которое открывается, когда приходит любое push-уведомление, и оно длится 30 секунд.Работает нормально, если приложение на переднем плане, но если приложение на заднем плане, запускается основное действие, и должно появиться диалоговое окно с оставшимся таймером.Но здесь я могу показать диалоговое окно, но время снова начинается с 30 секунд, которые я не хочу.Что я пробовал до сих пор: 1. В FirebaseMessagingService я установил широковещательный приемник для отправки широковещательной рассылки другим действиям, чтобы начать диалог.Он работает нормально и отправляет трансляцию для начала деятельности.и когда я нажимаю на уведомление, появляется диалоговое окно, но не показывает таймер.2. Я попытался использовать службу для запуска таймера, и служба запускается, но таймер не работает.3. Я создал еще один вещательный приемник в первом вещательном приемнике, чтобы установить время в диалоговом окне.Это работает даже в фоновом режиме, но не обновляет значения таймера.4. Запуск таймера обратного отсчета в фоновом режиме при получении push-уведомления Я также использовал это, но в этом, как обновить значения.
if(event.equals(eventName)){
String remoteMessageDate = remoteMessage.getData().get(eventName).toString();
intent = new Intent(this, DashboardMapsActivity.class);
Gson gson = new Gson();
booking = gson.fromJson(remoteMessageDate, BookingResult.class);
sendAllocateBroadcast(AppConstants.INSTANCE.getRIDE_REQUEST(), booking);
intent.putExtra(AppConstants.INSTANCE.getRIDE_REQUEST(),booking);
Log.w(TAG, "setActions: "+ Calendar.getInstance().getTime().toLocaleString());
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
// intent.setFlags(Intent.FL);
String message = "You have new booking";
createNotification(message);
BroadcastReceiver
BroadcastReceiver rideRequestreceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.hasExtra(AppConstants.INSTANCE.getRIDE_REQUEST()))
{
Toast.makeText(DashboardMapsActivity.this,"booking Received",Toast.LENGTH_SHORT).show();
booking = (BookingResult) intent.getSerializableExtra(AppConstants.INSTANCE.getRIDE_REQUEST());
countDownTimer(booking.getBooking().getBookingId());
setFCMNewRideDialogValue(booking);
}
}
};
CountDownTimer
private void countDownTimer(final Integer bookingId) {
Intent intent1 = new Intent(this, TimerService.class);
startService(intent1);
countDownTimer = new CountDownTimer(30000,1000) {
@Override
public void onTick(long millisUntilFinished) {
// Log.w(TAG, "onTick: "+ TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished));
rideRequestDialog.setTimerValues(TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished));
}
@Override
public void onFinish() {
// Log.w(TAG, "onFinish: timer finish " );
rideRequestDialog.rideDismiss();
rejectRide(bookingId);
}
}.start();
}
OnCreate
if (intent.hasExtra(AppConstants.INSTANCE.getRIDE_REQUEST())) {
booking = (BookingResult) intent.getSerializableExtra(AppConstants.INSTANCE.getRIDE_REQUEST());
if(!(rideRequestDialog.dialogShowing()))
{
setFCMNewRideDialogValue(booking);
}
} else {
// Do something else
}
Я хочу показать диалоговое окно с рабочими значениями таймера