【发布时间】:2011-11-07 07:55:30
【问题描述】:
我有一个接口类
public interface AsyncTaskExecuteCommand {
public Object executeCommand(String jsonLocation) throws IOException,JSONException;
}
我有一个 HashMap 来存储这个接口的实例
public static HashMap<String,AsyncTaskExecuteCommand> executeCommandHashMap
executeCommandHashMap.put(COMMAND_CORE_FIELD_FETCH, new AsyncTaskExecuteCommand() {
@Override
public Object executeCommand(String jsonLocation) throws IOException, JSONException{
//return some thing
}
});
executeCommandHashMap.put(COMMAND_REGISTER_FIELD_FETCH, new AsyncTaskExecuteCommand() {
@Override
public Object executeCommand(String jsonLocation) throws IOException,
JSONException {
//return some thing
}
});
我的 AsyncTask 名为 GeneralAsyncTask 包括
doInBackground(){
AsyncTaskExecuteCommand asyncTaskExecuteCommand = executeCommandHashMap.get(params[0]);
return asyncTaskExecuteCommand.executeCommand(params[1]);
}
而这个AsyncTask被称为
new GeneralAsyncTask().execute(COMMAND_REGISTER_FIELD_FETCH,"http://something");
我这样做是因为我的 AsyncTask 的一般结构保持不变,即它执行一些方法并返回一些值。只有方法执行类型和返回值会不同。如果我不实现将接口传递给 async任务,我最终创建了很多 AsyncTask 类。 那么,这种方法是解决我的方案的好方法吗?
【问题讨论】:
标签: android interface android-asynctask