java - 使用具有多个静态 AsyncTask 的静态类有什么缺点吗?

标签 java android android-asynctask

我创建了一个带有一些静态 AsyncTasks 的静态类 (NetworkUtils.java),每个类都会向服务器发送一些数据并检索响应。

它运行良好(在测试环境中),并且使 Activity 中的代码非常干净:

NetworkUtils.SomeNetworkingTaskCallbackInterface callbacks = 
        new NetworkUtils.SomeNetworkingTaskCallbackInterface() {
    @Override
    public void onFinished(String result) {

    }

    @Override
    public void onFailed() {

    }
};

NetworkUtils.SomeNetworkingTask task = new NetworkUtils.SomeNetworkingTask(callbacks);
task.execute();

现在我正在做一些额外的研究,看看这种方法有什么问题。我见过很多嵌套静态 AsyncTasks 的用例,但我需要它们完全解耦和模块化,这就是为什么我将它们放入单独的静态类中。我想不出有什么缺点。有经验丰富的人可以参与讨论吗?

最佳答案

我能想到的唯一缺点是您无法访问父类的非静态成员。例如,如果您的静态 Async Task 对象具有 Activity 父类,您将无法调用需要 context 的方法。这意味着您将无法从异步任务启动服务、 Activity 或广播事件。

但是,您可以简单地将上下文对象传递给静态类来解决这个问题。但是,当您的异步任务花费很长时间并且您的 Activity 在调用 onFinish 之前就被销毁时,会发生什么情况呢?您会收到错误,因为您的上下文对象来自已损坏的 Activity 。

关于java - 使用具有多个静态 AsyncTask 的静态类有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51012176/

相关文章:

java - 使用 openCV 进行人脸识别

java - 如何在按钮上绘制几何形状

android-asynctask - 如果从内部调用 API,onPrepareOptionsMenu 的行为会很奇怪

java - 重写 Application 类并通过静态变量访问它是否安全?

java - Jsoup 选择包含 html 标签的文本

java - 如何使用javax.sound.sampled.LineListener?

java - Android AsyncTask 和对象传递

Android 3.0 - 究竟使用 LoaderManager 实例有什么优势?

android - AlertDialog中ListView下的按钮被隐藏

Android - 异步任务不将数据传递到私有(private)数组中?