Я долгое время (8 лет) разработчик С#, занимающийся небольшим развитием Android. Это первый раз, когда я использовал Java, и у меня небольшие проблемы с изменением моего мышления, когда речь идет о внутренних классах.
Я пытаюсь написать класс, чтобы обернуть API RESTful для выполнения различных вызовов на сервере из одного типа места, например.
string jsonResult = APIWrapper.getItems("category 1");
И я хочу использовать AsyncTask, чтобы получить материал в фоновом режиме.
Итак, один из способов - иметь AsyncTask в APIWrapper:
class ActivityA extends Activity {
myButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//get stuff and use the onPostExecute inside the APIWrapper
new APIWrapper().GetItems("Category A", MyGetItemsCallBack);
}});
function void MyGetItemsCallBack(String result)
{
//render the result in the activity context, in a listview or something
}
}
Я не уверен, что идея callback/delegate работает в Java в любом случае!
Другим способом является использование AsyncTask в Activity и создание APIWrapper, чтобы просто получить данные как рабочий/помощник:
class ActivityA extends Activity {
myButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//get stuff and use the onProcessComplete inside the APIWrapper
new GetItems("Category A");
}});
class GetItems(String theCategory) extends AsyncTask
{
doInBackground()
{
return new APIWrapper().GetItems(theCategory);
}
onPostExecute(String result)
{
//render the result in the activity context, in a listview or something
}
}
}
Может ли кто-нибудь помочь мне сделать правильный выбор?