我的应用程序启动一个AsyncTask
从 URL 下载文件的应用程序。同时它会创建一个状态栏Notification
,告诉用户下载完成的百分比。
我试图让我的应用程序响应单击通知。如果下载仍在进行中,我想显示一个DialogInterface
询问他们是否要停止下载。单击是应该停止下载。
我遇到的问题是我不确定如何从PendingIntent
我为通知设置的访问我的异步任务。我可以DialogInterface
很容易地显示,但我不确定如何显示正在停止下载的活动。
我尝试创建一个可以访问通知的 Helper 类以及引用可下载文件的 File 对象,但是我收到一条错误消息,指出该对象不可序列化(它确实实现了Serializable
)。助手类还包括一个成员,该成员将保存下载进度,这是我将用于是否显示对话框的条件。
我正在考虑使用 Brodcast Action 和接收器,但我不确定将接收器放在哪里。它会进入扩展的类AsyncTask
吗?
任何帮助,将不胜感激。这是PendingIntent
附在Notification
. 如果您想查看更多代码,请询问。
public class DownloadNotificationActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
Intent i = getIntent();
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick( DialogInterface dialog, int which ) {
switch ( which ) {
case DialogInterface.BUTTON_POSITIVE :
// Yes button clicked
// Stop download
finish();
break;
case DialogInterface.BUTTON_NEGATIVE :
// No button clicked
finish();
break;
}
}
};
if ( /* download not complete */ ) {
AlertDialog.Builder builder = new AlertDialog.Builder( this );
builder.setMessage( R.string.stop_download ).
setPositiveButton( R.string.yes, dialogClickListener ).
setNegativeButton( R.string.no, dialogClickListener ).show();
}
else {
// Access file
}
}
}
所以说清楚,我有一ViewDetailActivity
堂课。它有一个名为的内部类,当用户单击屏幕上的按钮时,DownloadFile
它会扩展并执行。AsyncTask
在 的doInBackground()
方法中DownloadFile
,从 URL 开始下载 mp3,Notification
并根据下载的文件量创建和更新状态栏。的PendingIntent
是Notification
用DownloadNotificationActivity
(显示的代码)创建的,它应该显示一个对话框,选择“是”,应该取消AsyncTask
.
我的问题是我需要回复DownloadFile
已取消下载的任务,但我不确定如何DownloadFile
从该任务DownloadNotificationActivity
中访问以取消它。
提前致谢!