我创建了一个带有一些静态 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/