Я сейчас работаю над проектом Android и столкнулся с ситуацией, когда мне нужно передать функцию в качестве параметра, поэтому я просмотрел StackOverflow и опробовал решение, чтобы инкапсулировать функцию с Runnable
.
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что функция, которую я хочу передать, ожидает параметры, а Runnable.run()
не принимает их. Поэтому в настоящее время я пытаюсь расширить Runnable
и переопределить run()
, чтобы позволить ему принимать параметры, которые затем я могу передать действительной функции.
Теперь я немного не уверен, поскольку run()
используется в Thread
о том, как я могу переопределить его, не выбивая Thread
. Пока я не использую другие методы Thread
. Любой предложенный подход?
EDIT
Цель состоит в том, чтобы вызвать эти пользовательские Runnables внутри метода слушателя следующим образом:
public void startRequest(RequestOperation operation, final Runnable onSuccess, final Runnable onError, final Runnable onFinished) {
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, instance_context.getResources().getString(R.string.base_url), null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
onSuccess.run();
onFinished.run();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
onError.run();
onFinished.run();
}
});
queue.add(request);
}
В лучшем случае onSuccess
может получить переданный объект response
, а onError
получает error
.