Если вы сделаете param
окончательной переменной, вы можете просто обратиться к ней из Callable
:
final String param = ...;
async.finished(new Callable() {
// the function called during async.onPostExecute;
doSomething(param);
});
Это необходимо сделать, когда вы создадите Callable
, хотя - вы не можете дать ему значение позже.Если вам это нужно по какой-то причине, вам придется использовать общее состояние - некоторый «держатель», к которому у Callable
есть доступ, и который может иметь значение, установленное в нем до выполнения Callable
.Вероятно, это может быть просто MyAsyncTask
:
final MyAsyncTask async = new MyAsyncTask();
async.finished(new Callable() {
// the function called during async.onPostExecute;
doSomething(async.getResult());
});
async.execute(url);
Тогда:
private JSONObject result;
public JSONObject getResult() {
return result;
}
@Override
protected void onPostExecute(JSONObject result) {
this.result = result;
if(result != null) {
try {
this._finished.call();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}