我使用的AsyncTask本教程与任务和通知: https://eliasbland.wordpress.com/2011/03/11/an-example-of-how-to-run-a-background-task-and-report-progress-in-the-status-bar-using-asynctask-on-android/Android的通知回调
我感到困惑的是如何让一个回调做一些原班它是从调用。理想情况下,这将是巨大的,有这样的:
private class DownloaderTask extends AsyncTask {
doInBackground() { ... download the file ... }
onProgressUpdate, onPreExecute, etc. from the example, managing a notification.
notificationClicked() {
if (success) {
//show file
} else {
cancel(true);
}
}
但是
,看来的PendingIntent由打开新的意图,不要称呼打开它的类的功能?有没有办法做到这一点?
编辑:好吧,我发现了如何调用从的PendingIntent调用服务:
Intent returnIntent = new Intent(_context,DownloadService.class);
returnIntent.putExtra("url", _url);
returnIntent.putExtra("name",_title);
notificationIntent = PendingIntent.getService(_context, 0, returnIntent, 0);
notification.setLatestEventInfo(_context, _title, _url, notificationIntent);
由于始终只有一个服务运行后,下载服务有其所有AsyncTasks的ArrayList,和onStart检查其中一个是否具有相同的url和title,如果是,则调用AsyncTask的方法来取消正在运行的项目或对完成的项目执行操作。
ArrayList的计数是作为新的DownloaderTasks的ID发送的,所以每个人都有一个唯一的ID来创建它的通知,但我注意到有时当我在状态下拉列表中选择一个通知时,它会调用DownloadService与错误的网址和标题,几乎就像它使用另一个通知的ID?这怎么解决?
你的问题显得扑朔迷离。你想取消AsyncTask吗?你能提供一个你想要做什么的例子吗? – advantej 2011-05-31 20:06:49
是的,我希望下载是可以取消的,就像默认浏览器的下载器一样,你可以点击它来取消或下载文件。 – NoBugs 2011-05-31 20:13:11