假设我们有一个改进的回调,如下所示:
Callback<T> callback = new Callback<T>() {
@Override
public void onResponse(Call<T> call, Response<T> response) {
mProgressBar.dismiss();
if (response.code() == 401) {
Toast.makeText(getApplicationContext(),
"Invalid session, logging out",
Toast.LENGTH_LONG).show();
Session.getInstance(getApplicationContext()).clear();
this.navigateToLoginActivity();
}
}
@Override
public void onFailure(Call<T> call, Throwable t) {
}
}
假设带有此回调的改造请求运行了很长时间,并且如果调用onResponse时启动请求的活动已经完成,那么将导致内存泄漏,我们通过
引用该活动this.navigateToLoginActivity()
所以问题是如何在onResponse中获取上下文?参考弱?但这是一个常见的用例,即在身份验证失败的情况下注销用户。我想知道这种情况下针对一般AsyncTask案例和改造案例的最佳实践。