我创建了一个带有几个静态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();
现在,我正在做一些额外的研究,看看这种方法是否有什么问题。我见过很多嵌套静态AsyncTasks的用例,但我需要它们完全解耦和模块化,这就是为什么我把它们放在一个单独的静态类中。我想不出有什么坏处。可以有更有经验的人加入进来吗?
发布于 2018-06-25 01:34:35
我能想到的唯一缺点是你不能访问父类的非静态成员。例如,如果您的静态Async Task
对象有一个Activity
父类,那么您将无法调用需要context
的方法。这意味着您将无法从Async Task
启动服务、活动或广播事件。
但是,您可以简单地将上下文对象传递给静态类来解决这个问题。但是,如果您的Async Task
花费了很长时间,并且您的活动在调用它的onFinish
之前就被销毁了,那么会发生什么呢?您将收到一个错误,因为您的上下文对象来自已销毁的活动。
https://stackoverflow.com/questions/51012176
复制相似问题