Мой вопрос о том, как мы должны использовать анонимный класс при передаче в качестве параметра для асинхронного обратного вызова?Например, если у меня есть следующий код:
interface MyListener {
void onSucces(String requestedAction, JSONObject response);
void onError(String requestedAction, JSONObject response, int statusCode);
};
interface CallbackInterface {
void onResponse(String requestedAction, JSONObject response, int statusCode);
};
void doAsyncJob(String action, CallbackInterface callbackItf);
void makeJob(String action, final MyListener listener) {
doAsyncJob(action, new CallbackInterface {
void onResponse(String requestedAction, JSONObject response, int statusCode) {
if (statusCode == 200) {
listener.onSucces(requestedAction, response);
} else {
listener.onError(requestedAction, response, statusCose);
}
}
});
}
for(i = 1; i < 1000; i++) {
makeJob("Action_" + i, new MyListener{
void onSucces(String requestedAction, JSONObject response) {
//process response
}
void onError(String requestedAction, JSONObject response, int statusCode) {
//process error
});
}
, вызывающий «makeJob» в цикле путем выделения каждый раз нового слушателя (MyListener), который позже используется «onResponse», этот слушатель может получить право науборщик мусора ?Нужно ли сохранять одну ссылку на этот слушатель, чтобы быть уверенным, что при последующем использовании в onResponse он еще не надет?