さて、次のような 2 つの別々のクラスで定義された 2 つのバックグラウンド タスク (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 SubClasses に Interface Reference として格納されます
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;
}
各 AsynTask クラスまたはサブクラスの onPostExecute では、以下に示すように、JSONArray が返されるか、呼び出し元のクラスに渡されます。この場合、呼び出しクラスはMainClass ですが、同じ AsynTask クラス ( GettingBeaconsListおよびGettingAirports )を使用する他のアクティビティ クラスがあります。
protected void onPostExecute(String file_url)
{
pDialog.dismiss();
delegate.JsonArrayLoaded(gotNearestbeacons);
}
現在、 MainClassに1 つのメソッド (JsonArrayLoaded) があり、2 つの異なるバックグラウンド タスクまたはサービスからの 2 つの応答に対処しています。条件を使用して、どのサービス/クラスまたは AsynTask が実行されているかを把握しています。
しかし、将来 5 つ以上のバックグラウンド サービスがあり、それらも JSON 配列を返すだけなので、サービスごとに個別のインターフェイスを作成する必要がある場合など、そのようなシナリオに取り組む最善の方法を求めています。
この場合、オブジェクト指向の方法はどうあるべきですか?