2011-02-08 21 views
13

mọi người. Tôi đã đọc trên trang web android các mô tả về thực thi() của AsyncTask:Nhiều tham số đầu vào cho phương thức execute() của AsyncTask

public final AsyncTask<Params, Progress, Result> execute (Params... params)

Nhưng trong dự án của tôi, tôi đã đọc các mã như thế này:

private static final int JSON = 0; 
private static final int NAME = 1; 
@Override 
protected String doInBackground(String... strData) {  
     FileOutputTask task = new FileOutputTask(context); 
     task.execute(strData[JSON], strData[NAME]); 
} 

Ai đó có thể cho tôi biết tại sao có 2 tham số đầu vào cho phương thức thực thi()?

Vì theo đặc điểm kỹ thuật, chỉ nên có một tham số đầu vào.

Cảm ơn trước!

Trả lời

13

Đọc Params... paramsParams[] params. Bạn có thể gửi nhiều thông số như bạn muốn.

+0

cách truy cập thông số Params [] khi gọi hàm doInBackground()? – Cole

+3

đã nhận được: chuyển nhiều doInBackground (Chuỗi ... thông số): task.execute (uri, tên người dùng, mật khẩu, v.v ...); nhận được: trả về Login.getResponseXML (params [0], params [1], params [2], etc ...); duh – Cole

45

Dưới đây là cách tôi nhận thông số để chuyển nhiều thông số. Bạn có thể làm điều đó như Boris mô tả, nhưng nếu bạn vượt qua các loại khác nhau thì sao?

Đầu tiên, tạo AsyncTask của bạn như bình thường, nhưng bên trong nó, tạo ra một constructor:

private class StartTask extends AsyncTask<Context, Void, Boolean> 
    { 
     private ProgressDialog progress; 
     private String strAction=""; 

     public StartTask(ProgressDialog progress, String Action) 
     { 
      this.progress = progress; 
      this.strAction = Action; 
     } 
    } 

Bây giờ, về sự kiện hoặc bất cứ thứ gì của bạn, khi bạn muốn khởi hành động mà bạn gọi AsyncTask và đường chuyền của bạn bao nhiêu thông số tùy thích.

ProgressDialog progress = new ProgressDialog(this); 
    progress.setMessage("Loading..."); 
    String strAction = "this_is_a_string"; 
    new StartTask(progress, strAction).execute(this); 

Bạn có thể thấy rằng gọi "StartTask" và chuyển các tham số hằng số sẽ gán các biến trong lớp StartTask.

+0

Thú vị tôi phải nói – kirtan403

Các vấn đề liên quan