这是我的服务类中发生的通知:
void DispatchNotificationThatServiceIsRunning()
{
Notification.Builder notificationBuilder = new Notification.Builder(this)
.SetSmallIcon(Resource.Drawable.btn_start)
.SetContentTitle("Count Down Active!")
.SetContentText(_2TimerRunning._hours.ToString() + _2TimerRunning._minutes.ToString()
+ _2TimerRunning._seconds.ToString());
var notificationManager = (NotificationManager)GetSystemService(NotificationService);
notificationManager.Notify(1000, notificationBuilder.Build());
}
这确实有效,但问题是“SetContentText”部分。 此文本仅更新一次,但另一个计时器不断计算大括号内的秒数。不幸的是,这并没有得到更新,即使计时器仍在计数,notificatin总是读取“000000”。
如何每秒更新一次文本,以便通知中会有持续的倒计时?
此外,如何捕获此通知上的点击以再次打开活动?谢谢:)
谢谢!
答案 0 :(得分:1)
Xamarin:每隔一秒更新一次通知文本
您可以创建一个可以帮助您每1秒更新一次通知文本的任务,调用DispatchNotificationThatServiceIsRunning()
中的Task.Delay()
可以解决重复问题。 :
void DispatchNotificationThatServiceIsRunning()
{
Task.Delay(1000).ContinueWith(t =>
{
Notification.Builder notificationBuilder = new Notification.Builder(this)
.SetSmallIcon(Resource.Drawable.Icon)
.SetContentTitle("Count Down Active!")
.SetContentText(DateTime.Now.ToString("hh:mm:ss"));
var notificationManager = (NotificationManager)GetSystemService(NotificationService);
notificationManager.Notify(1000, notificationBuilder.Build());
DispatchNotificationThatServiceIsRunning();//This is for repeate every 1s.
}, TaskScheduler.FromCurrentSynchronizationContext());
}
更新:
您可以使用PendingIntent来实现此功能,添加以下代码:
Intent notificationIntent = new Intent(ApplicationContext, typeof(Activity2));
PendingIntent contentIntent = PendingIntent.GetActivity(this, 1, notificationIntent, PendingIntentFlags.UpdateCurrent);
...
notificationBuilder.SetContentIntent(contentIntent).SetAutoCancel(true);
答案 1 :(得分:0)
看起来问题出在_2TimerRunning
中,从此对象检索的时间值无效。我能看到的所有其他代码都运行正常。所以我的建议是首先调试该对象。