[英]How do I let the user cancel a progress notification in Android?
我正在开发一个Android应用,用户可以在其中从服务器下载内容。 用户可以单击下载按钮,然后将发布请求发送到服务器,并获取包含数据的JSON字符串。 JSON字符串中的某些数据是照片的网址,因此我给出了一个通知,该通知会跟踪下载的照片数量并使用该数量来更新进度通知。
我的所有工作都很好,并且没有给我带来任何麻烦。 从用户角度来看,我现在遇到的问题更多。 如果我看到正在下载的通知,则可以将其刷掉以将其关闭,但是由于我使用一个在下载照片时循环播放的线程来更新通知,因此该线程在我将其关闭后几乎会立即重新创建通知。
我想这对用户可能会很烦,并且想知道如何才能将通知的中断与滑动的操作链接在一起以删除通知。
关于如何执行此操作有任何想法吗? 我是要解决不是真正问题的问题吗? 我会以错误的方式处理吗? 对于任何反馈,我们都表示感谢。
这是我的通知线程代码:
TripDownloadStatus prog = TripDownloadStatus.getStatus(notificationID);
//Loops; reading the progress many times a second
try{
while(prog.getTotalTasks() == 0 || prog.getComplTasks() < prog.getTotalTasks()){
Thread.sleep(200); //Roughly 5 times a second
prog = TripDownloadStatus.getStatus(notificationID);
final int max = prog.getTotalTasks();
final int cur = prog.getComplTasks();
//Check if there are photos in progress before we go into an
//infinite loop of waiting to do nothing.
if(max == 0 && prog.isJSONParsed())
break;
this.theBuilder.setProgress(max, cur, false);
manager.notify(this.notificationID, this.theBuilder.build());
}
} catch (InterruptedException ex){
return;
}
使用deleteIntent禁用通知是不明智的做法-如果用户清除了所有通知,它将停止下载,这可能不是用户想要的。 作为用户,我不希望通过“全部清除”按钮清除所有通知时取消下载。
您的案例是教科书案例,正在进行通知:
builder.setOngoing(true);
这样,用户无法将其消除-但是现在您有责任在适当的时候消除它。 下载完成后,以您的情况为准。
为了让用户取消操作,您需要使用以下命令向通知中添加按钮
builder.addAction(icon, title, intent);
当用户触摸该按钮时,它将触发您的服务上的onNewIntent(),您应该在其中放置取消代码-停止下载等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.