我有一些活动实现了一个接口(称为 NetworkListener)。当从远程服务器请求信息时,它们会产生一个类的实例(称为 NetworkRequest)。NetworkRequest 是一个线程类,它向服务器发送请求,等待响应并将其发送回请求的 NetworkListener 对象。最多可能需要 10 秒才能将数据返回到 NetworkListener 实例。在那段时间里,很有可能那个Activity或者Fragment已经不存在了,很多基于服务端调用的action已经失效,会抛出NPE,比如:
((TextView) findViewById(R.id.server_status)).setText("Server response: " + response.getMsg());
确保请求类仍然存在并能够更新 UI 的最佳方法是什么?
目前在我拥有的从服务器接收回调的每个方法的顶部:
if (getWindow() == null) { // or getView()/getActivity() if Fragment
finish();
return;
}
这似乎效率低下且多余。有没有更好的方法来完成我想要完成的事情?
谢谢!