Vâng, tôi có một lớp hoạt động với hai nhiệm vụ nền (async-Task) đã được quy định tại hai lớp riêng biệt nhưCách một giao diện có thể được sử dụng cho các tác vụ Android nền khác nhau?
public class GettingBeaconsList extends AsyncTask<String, String, String>
public class GettingAirports extends AsyncTask<String, String, String>
được khởi tạo và thực hiện trong 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
}
}
}
Bây giờ ở trên mã MainClass.this được lưu trữ dưới dạng Tham chiếu Giao diện trong AsynTask SubClasses như thế này
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 của mỗi lớp hoặc lớp con AsynTask, JSONArray được trả về hoặc chuyển về lớp gọi, được hiển thị bên dưới. Trong trường hợp lớp gọi đây là MainClass nhưng có lớp hoạt động khác mà sử dụng lớp AsynTask cùng (GettingBeaconsList và GettingAirports)
protected void onPostExecute(String file_url)
{
pDialog.dismiss();
delegate.JsonArrayLoaded(gotNearestbeacons);
}
Bây giờ tôi có một phương pháp (JsonArrayLoaded) trong MainClass để giải quyết hai phản hồi đến từ hai nhiệm vụ hoặc dịch vụ nền khác nhau. Tôi đang sử dụng điều kiện để tìm ra dịch vụ/lớp hoặc AsynTask được thực thi.
Nhưng tôi yêu cầu cách tốt nhất để xử lý kịch bản như thể chúng ta có 5 dịch vụ nền trở lên trong tương lai và chúng cũng trả về một mảng JSON.
Điều gì sẽ hướng đối tượng ra ngoài trường hợp này?
tên cho giao diện cũng không phù hợp. Hãy làm theo các quy ước đặt tên thích hợp trong khi đăng các ví dụ. –
kết quả được sử dụng trong lớp chính ở đâu? Vui lòng chỉnh sửa bài đăng và đưa ra một ví dụ phù hợp. Không có ý nghĩa –
@MuhammadIrfan Vì vậy, đối với câu hỏi của bạn liên quan đến một __ hướng theo cách_ để giải quyết vấn đề của bạn, bạn đã chọn câu trả lời ít nhất là hướng đối tượng? Tôi muốn nói điều đó thật tuyệt. :) –