【发布时间】:2013-08-29 16:25:19
【问题描述】:
我想我没有得到关于 android 活动生命周期的任何信息。
这就是我的情况 - 我有一个 AsyncTask,它负责将 XML 文件上传到服务器。当用户在活动中填写所需数据后按下按钮时调用它。在它被调用之后,我真的不再需要这个活动了,所以我调用了 finish();马上。
task = new ASSend(data);
task.execute();
finish();
但是,如果在执行 AsyncTask 期间出现问题,我需要显示错误消息(因此我需要使用 AlertDialog 或以对话框为主题的意图),并且我还需要在 doInBackground 中打开文件
FileInputStream fis;
fis = context.openFileInput(filePath);
需要上下文。是否可以传递启动 AsyncTask 的 Activity 的上下文来执行所有这些操作,即使启动 AsyncTask 的 Activity 不再存在?
【问题讨论】:
-
您可以保留对它的引用,但这将是令人担忧的上下文泄漏:android-developers.blogspot.de/2009/01/…
-
为什么不创建一个新的对话活动,如果上传失败,异步任务将启动。它也可以要求用户再试一次...
-
启动执行 ASyncTask 的服务(而不是在您的 Activity 中强制启动 AsyncTask)。你可以在后台服务中做任何你想做的事情。
标签: android android-intent android-asynctask