Я пытаюсь сделать уведомление с таймером обратного отсчета.Я делаю не так?
Я пытаюсь обновить информацию в уведомлении, используя таймер обратного отсчета.Если экран не блокируется, он работает правильно.Но в случае блокировки мой экран включает каждое уведомление (так каждую секунду).Так что таймер работает правильно, но очень раздражает, что каждую секунду мой экран включается.
package com.example.yanec.schedulekpi;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.CountDownTimer;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationManagerCompat;
import android.util.Log;
import com.example.yanec.schedulekpi.Activities.MainActivity;
import com.example.yanec.schedulekpi.Fragments.DetailScheduleInfoFragment;
public class ServiceShowNotification extends BroadcastReceiver {
CountDownTimer countDownTimer;
long timeLeft;
NotificationCompat.Builder mBuilder;
NotificationManagerCompat notificationManager;
@Override
public void onReceive(final Context context, final Intent intent) {
Log.d("myLogs", "OnReceive");
timeLeft = intent.getLongExtra(Constants.INTENT_PASS_DATE, 0);
showNotification(intent, context, Parser.toStringFrom(timeLeft));
countDownTimer = new CountDownTimer(timeLeft, Constants.COUNT_DOWN_INTERVAL) {
@Override
public void onTick(long millisUntilFinished) {
timeLeft -= Constants.COUNT_DOWN_INTERVAL;
mBuilder.setContentText(Parser.toStringFrom(timeLeft));
mBuilder.setVisibility(Notification.VISIBILITY_PUBLIC);
notificationManager.notify(Constants.NOTIFICATION_ID, mBuilder.build());
}
@Override
public void onFinish() {
DetailScheduleInfoFragment.isServiceWorking = false;
}
};
countDownTimer.start();
}
private void showNotification(Intent intent, Context context, String time){
Intent intent1 = new Intent(context, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent1, 0);
mBuilder = new NotificationCompat.Builder(context, Constants.CHANNEL_ID)
.setSmallIcon(R.drawable.ic_bar)
.setContentTitle(intent.getStringExtra(Constants.INTENT_PASS_NAME))
.setContentText(time)
.setPriority(NotificationCompat.PRIORITY_MAX)
.setContentIntent(pendingIntent)
.setAutoCancel(true);
mBuilder.setVisibility(Notification.VISIBILITY_PUBLIC);
notificationManager = NotificationManagerCompat.from(context);
notificationManager.notify(Constants.NOTIFICATION_ID, mBuilder.build());
}
}
Если мой экран заблокирован, и я обновляю уведомление, мой экран не просыпается.Но если я просыпаюсь от экрана самостоятельно (не разблокируйте, просто просыпайтесь с помощью кнопки wakeUp), он показывает мне обновленную информацию.Спасибо.