好吧,我有一个带有两个后台任务(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;
}
每个 AsynTask 类或子类的 onPostExecute,JSONArray 返回或传回调用类,如下所示。在这种情况下,调用类是MainClass但还有其他活动类使用相同的 AsynTask 类(GettingBeaconsList和GettingAirports)
protected void onPostExecute(String file_url)
{
pDialog.dismiss();
delegate.JsonArrayLoaded(gotNearestbeacons);
}
现在我在MainClass中有一个方法 (JsonArrayLoaded)来处理来自两个不同后台任务或服务的两个响应。我正在使用条件来确定执行了哪个服务/类或 AsynTask。
但是我要求最好的方法来解决这种情况,如果我们将来有 5 个或更多后台服务,它们也只是返回一个 JSON 数组,所以我需要为每个服务创建单独的接口吗?
在这种情况下,面向对象的出路应该是什么?