Как один интерфейс можно использовать для разных фоновых задач Android?
Ну, у меня есть класс активности с двумя фоновыми задачами (Async-Task), которые были определены в двух отдельных классах, таких как
public class GettingBeaconsList extends AsyncTask
public class GettingAirports extends AsyncTask
которые инициализируются и выполняются в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 (GettingBeaconsList а такжеGettingAirports)
protected void onPostExecute(String file_url)
{
pDialog.dismiss();
delegate.JsonArrayLoaded(gotNearestbeacons);
}
Теперь у меня есть один метод (JsonArrayLoaded) вMainClass для решения двух ответов, поступающих от двух разных фоновых задач или служб. Я использую условие, чтобы выяснить, какой сервис / класс или AsynTask выполняется.
Но я прошу наилучший способ решения такого сценария, если в будущем у нас будет 5 или более фоновых сервисов, и они просто возвращают массив JSON, так что мне нужно создавать отдельные интерфейсы для каждого сервиса?
Каким должен быть объектно-ориентированный выход в этом случае?