在状态栏通知,停止AsyncTask的时候通知关闭

你好,我做了我从网络下载文件的通知。 下面的代码。 我想办理点击通知行动,关闭了他,并停止AsyncTask的工作。 在当前的时间我都无法理解我的行为。 就像,当我点击通知其关闭,但他的AsyncTask的再次打开时调用publishProgress方法。 如何我处理点击通知? 可能是我能做到这一点不同于有? 我把按钮,在xml layoutsetOnClickListener呼叫cancel(boolean)方法,但后来才知道,那是不可能的。

public class DownloadFileNotification extends AsyncTask<String, Integer, String> { public DownloadVkVideoFiles(Context c, String title) { //constructor } public void createNotification() { //create notification notificationManager = (NotificationManager) context .getSystemService(context.NOTIFICATION_SERVICE); Intent notificationIntent = new Intent(); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.download_notification); // TODO change to shows title tickerText = context.getResources().getText(R.string.downloadTitle); icon = android.R.drawable.stat_sys_download; time = System.currentTimeMillis(); notification = new Notification(icon, tickerText, time); notification.flags |= Notification.FLAG_ONGOING_EVENT; notification.flags |= Notification.FLAG_AUTO_CANCEL; contentView.setImageViewResource(R.id.downloadImage, R.drawable.download); contentView.setTextColor(R.id.title, notification_text_color); contentView.setFloat(R.id.title, "setTextSize", notification_text_size - 3); contentView.setTextViewText(R.id.title, title); contentView.setProgressBar(R.id.progressBar, 100, 0, false); notification.contentIntent = pendingIntent; notification.contentView = contentView; notificationManager.notify(HELLO_ID, notification); } @Override protected void onPreExecute() { // execute the status bar notification createNotification(); super.onPreExecute(); } @Override protected String doInBackground(String... params) { //download file } @Override public void onProgressUpdate(Integer... progress) { //update progress bar notification } @Override protected void onPostExecute(String result) { super.onPostExecute(result); // result processing } @Override protected void onCancelled() { super.onCancelled(); } }

--------------解决方案-------------

我可以想象类似的广播接收机,或者甚至一个活动或服务被设计为接收由所述通知点击触发的意图。 该实体又可能被用来取消任务。

只需调用运行的异步对象的取消(true)方法。

//In your broadcast receiver/ activity / service
sometask.cancel(true);
.
.
.
//Inside doInBackground()
{
while(!isCancled())
{
//continue task
}
}

我希望它可以帮助..

分类:安卓 时间:2015-03-14 人气:0
本文关键词: 机器人,推送通知
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.781 (s). 10 q(s)