Ну, у меня есть класс активности с двумя фоновыми задачами (Async-Task), которые были определены в двух отдельных классах, таких как
public class GettingBeaconsList extends AsyncTask<String, String, String>
public class GettingAirports extends AsyncTask<String, String, String>
которые инициализируются и выполняются в MainClass
public class MainClass extends Activity implements DelegateTaskCompleted
{
int ServiceBoolean = 0;
public OnClickListener LoadingBeaconList = new OnClickListener()
{
public void onClick(View v)
{
ServiceBoolean =1;
new GettingBeaconsList (context,MainClass.this).execute();
}
}
public OnClickListener LoadingAirportList= new OnClickListener()
{
public void onClick(View v)
{
ServiceBoolean =2;
new GettingAirports(context,MainClass.this).execute();
}
}
@Override
public void JsonArrayLoaded(JSONArray result)
{
// bla bla or whatever here i write, does not matter
if(ServiceBoolean == 1) {
// Load activity 5
}
else if( ServiceBoolean == 2)
{
// Load activity 6
}
else if( ServiceBoolean==3 )
{
// display Toast or Alert Box or load Activity number 8
}
}
}
Теперь в приведенном выше коде MainClass.this хранится как ссылка на интерфейс в подклассах AsynTask, например,
private Context context = null;
private DelegateTaskCompleted delegate = null;
public GettingBeaconsList (Context context,DelegateTaskCompleted delegate)
{
this.context = context;
this.delegate = delegate;
}
// And constructor of second AsynTask is same as of First AsynTask Class
private Context context = null;
private DelegateTaskCompleted delegate = null;
public GettingAirports (Context context,DelegateTaskCompleted delegate)
{
this.context = context;
this.delegate = delegate;
}
onPostExecute каждого класса или подкласса AsynTask, JSONArray возвращается или передается обратно вызывающему классу, показанному ниже. В этом случае вызывающий класс MainClass, но есть другие классы активности, которые используют те же классы AsynTask (GetBeaconsList и GettingAirports)
protected void onPostExecute(String file_url)
{
pDialog.dismiss();
delegate.JsonArrayLoaded(gotNearestbeacons);
}
Теперь у меня есть один метод (JsonArrayLoaded) в MainClass, чтобы решить два ответа, исходящих из двух разных фоновых задач или служб. Я использую условие, чтобы выяснить, какой сервис/класс или AsynTask выполняется.
Но я прошу наилучшего способа решить такой сценарий, как если бы у нас было 5 или более фоновых сервисов в будущем, и они просто возвращают массив JSON, поэтому мне нужно создавать отдельные интерфейсы для каждой службы?
Что должно быть объектно-ориентированным выходом в этом случае?