gpt4 book ai didi

android - 当我使用 Asynctask 时如何通知用户文件下载完成

转载 作者:行者123 更新时间:2023-11-29 18:03:19 26 4
gpt4 key购买 nike

我正在使用 Asynctask 在我的 Android 应用程序中下载文件。由于文件体积一般较大,我在后台启动文件下载。没有进度条或任何显示,因此用户可以在下载过程中访问应用程序的其他部分。

文件下载完成后,我想通知用户他的文件已成功下载。

使用 onPostexecute() 方法会产生问题,因为在下载过程开始时用户不再处于同一 Activity 中。因此,我无法使用来自 onPostExecute() 的警报对话框和通知,因为上下文存在问题。

我已将 Asynctask 的代码粘贴到下方。所以,请建议我解决此问题的方法。

class DownloadProcess extends AsyncTask<Void,Void,Void>{

Context cxt;

public DownloadProcess(Context context) {
cxt=context;
}


@Override
protected Void doInBackground(Void... arg0) {
try {
String fileurl="http://www.bigfiles/" + filenm;
URL url = new URL(fileurl);
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();


Path = Environment.getExternalStorageDirectory() + "/download/";
File pth=new File(Path);
File file = new File(pth,filenm);
FileOutputStream fos = new FileOutputStream(file);

InputStream is = c.getInputStream();

byte[] buffer = new byte[1024];
int len1 = 0;
while ((len1 = is.read(buffer)) != -1) {
fos.write(buffer, 0, len1);
}
fos.close();
is.close();

} catch (IOException e) {
Log.d("amit", "Error: " + e);
}

return null;
}


@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);

if (((Activity) AppDet.this).isFinishing() == false) {
AlertDialog.Builder builder = new AlertDialog.Builder(AppDet.this);
builder.setMessage("The app download is complete. Please check " +Path+ " on your device and open the " + filenm+ " file downloaded");
builder.setCancelable(true);
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
MediaPlayer md=MediaPlayer.create(AppDet.this, R.raw.ding);
md.start();
}
else {
//Not sure what to do here
}
}

最佳答案

改用 IntentService 怎么样……它有一个上下文,所以你可以使用通知……对话框很烦人,必须死掉

关于android - 当我使用 Asynctask 时如何通知用户文件下载完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14663439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com