这里不是 API 参考,而是更多描述。首先,很多人会将 AsyncTask 内联用作匿名类;记在脑子里。看起来您已经使用自己的类对其进行了扩展(这完全没问题),但这可能意味着您在构造函数中传递了必要的数据并将其作为类变量引用。在这种情况下,一些论点就没有多大意义了。
想象一下 AsyncTask 的匿名内联类。它要做的第一件事是在后台运行一些处理。为此,您需要一种将数据传递给 doInBackground 方法的方法(因为您没有构造函数来调用和传递数据)。所以第一个参数是你要传递给它的数据类型。如果你不需要传递任何东西,使用 Void,或者使用 Object,或者任何东西,真的,因为它必须是方法签名的一部分,但无论如何你都会忽略它。
对于许多情况,人们会希望提供进度更新。例如,您可以使用 Float 类型来表示完成百分比,或者使用 Long 来表示从文件中读取的字节数,或者使用 String 来表示给用户的一般消息。您使用进度类型传递临时进度信息(考虑将文件上传到 Facebook 或下载文件,它会在其中更新通知状态与进度 - 这就是您执行此操作的位置/方式)。你说过你不关心你的情况,所以使用 Void 并且不要费心实现任何进度方法。
最后,当任务完成时,您需要在 onPostExecute 中获取结果。所以你的 doInBackground 将返回一个值(这种类型的),AsyncTask 框架会将它传递给 onPostExecute。同样,这对于没有进一步正文的匿名类更有意义。如果您在班级成员中保留任何结果,那也很好(但没有必要)。如果您不需要在完成时执行任何操作,或者不需要传递任何数据,请使用 Void(并从 doInBackground 返回 null)。我发现至少为“成功完成或失败”返回一个布尔值是很有用的,这样您就拥有了该信息(这可能会影响您发布成功还是失败通知,因为任务完成通知是常见的 onPostExecute 操作)。
希望通过示例进行更多解释会有所帮助。