我在Xamarin上为Android制作应用程序,该应用程序在Android 6的三星手机上完美运行。
我有一个部分可以通过应用程序下载一些PDF,在此过程中,通知会一直显示已完成的进度百分比。
但是到目前为止,2台安装了Android 5.1的Android手机仍然在这段代码中重新启动。如果我删除通知更新代码,下载将通过并且没有任何奇怪的事情发生,但是当通知更新时,手机会在1-2%之后重新启动(或者更好的说,在通知更新1-2次后)。< / p>
同样的代码使我自己的手机在更新通知时有点慢,所以我知道它并不完全是完美的。
有人可以推荐一个解决方法吗?感谢。
以下是代码:
private void downloadprogress(object sender, DownloadProgressChangedEventArgs e)
{
try
{
if (e.ProgressPercentage < 100)
{
mBuilder.SetProgress(100, e.ProgressPercentage, false);
mBuilder.SetContentText("Downloading - " + e.ProgressPercentage + "%");
mNotifyManager.Notify(Convert.ToInt32(bookid), mBuilder.Build());
}
else
{
mBuilder.SetProgress(100, e.ProgressPercentage, false);
mBuilder.SetContentText("Preparing the file");
mNotifyManager.Notify(Convert.ToInt32(bookid), mBuilder.Build());
}
}
catch { }
}
这是通知标志:
Notification.Builder mBuilder;
NotificationManager mNotifyManager;
mNotifyManager = (NotificationManager)GetSystemService(Context.NotificationService);
mBuilder = new Notification.Builder(Application.Context);
if (!downloadingdemo)
mBuilder.SetContentTitle(title);
else
mBuilder.SetContentTitle(title + "(demo)");
mBuilder.SetContentText("Downloading - " + "0%");
mBuilder.SetSmallIcon(Resource.Drawable.CCicon);
mBuilder.SetAutoCancel(true);
mBuilder.SetOngoing(true);
mBuilder.SetProgress(100, 0, false);
mNotifyManager.Notify(Convert.ToInt32(bookid), mBuilder.Build());
答案 0 :(得分:0)
我会发表评论,但他们似乎已经填满了。
您每秒更新通知的次数是多少? (尝试记录此问题)您是否需要将其限制为仅在更改整个百分点时才更改?
我怀疑你用过多的电话抨击NotificationManager
,而且可能无法在旧设备上使用。
答案 1 :(得分:0)
好吧,正如我在其中一篇评论中所提到的,RunOnUIThread完成了这项工作。为了防止应用程序运行缓慢,我限制了更新量。所以这是迄今为止在我测试过的每部手机和平板电脑上运行良好的最终代码:
stuff
感谢大家的帮助。