我用几个静态的AsyncTasks创建了一个静态类(NetworkUtils.java
),每个类都向服务器发送一些数据并检索响应。
(在测试环境中)运行良好,并且使“活动”中的代码非常简洁:
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();
现在,如果这种方法有任何问题,我将做一些额外的研究。我已经看到了很多嵌套静态AsyncTask的用例,但是我需要将它们完全解耦和模块化,这就是为什么我将它们放在单独的静态类中的原因。我想不到任何缺点。可以给更有经验的人称体重吗?
答案 0 :(得分:1)
我能想到的唯一缺点是您将无法访问父类的非静态成员。例如,如果您的静态Async Task
对象具有一个Activity
父类,则您将无法调用需要context
的方法。这意味着您将无法从Async Task
开始服务,活动或广播事件。
但是,您只需将上下文对象传递给静态类即可解决该问题。但是,当您的Async Task
花费很长时间并且您的活动在调用onFinish
之前就被销毁了怎么办?您的上下文对象来自被破坏的活动,因此您会收到错误消息。