0

我已经使用通知来显示下载文件的状态。我只是使用 FileOutputStream 来下载文件,因此它也可以在小于 9 的 API 上工作。但现在我的问题是下载完成后,我试图在相应的阅读器中打开该文件。但是如果我关闭应用程序,在下载文件之间,它会引发窗口泄漏的异常。

我的进度更新方法代码如下,请帮助我摆脱困境。

@Override
protected void onProgressUpdate(Integer... values) {
    super.onProgressUpdate(values);
    progressUpdate(values[0]);
}

@SuppressWarnings("deprecation")
public void progressUpdate(int percentageComplete) {
    CharSequence contentText = percentageComplete + "% complete";
    mNotification.setLatestEventInfo(mContext, mContentTitle, contentText,
            mContentIntent);            
    mNotificationManager.notify(NOTIFICATION_ID, mNotification);

    if(percentageComplete==100){

        try {
            Log.e("file path ",file.getAbsolutePath());
            Uri path = Uri.fromFile(file);
            notificationIntent.setDataAndType(path, "application/pdf");
            notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(notificationIntent);
            finish();

        } catch (ActivityNotFoundException e) {
            Toast.makeText(getApplicationContext(),
                    "Unable to open file ,PDF Reader application is not installed in your device", Toast.LENGTH_SHORT).show();
        }

    }
}
4

1 回答 1

1

在您的应用程序处于后台或关闭后,您不应显示 toast/对话框。您可以从 Activity 生命周期的 onPause() 方法处理此问题,获取一个布尔值并在 onPause() 上将其设置为 true。如果它是真的意味着你的应用程序在后台,你不应该显示对话框。

于 2013-10-24T14:21:46.233 回答