2014-08-27 128 views
0

我做了一個擴展Asynctask的普通類。每當我打電話給Asynctask,我有4個字符串,我必須作爲asynctask中的參數傳遞,我可以根據字符串進行進一步處理。 是否有可能在asynctask中發送4個字符串?將參數傳遞給Asyntask

+0

通() – 2014-08-27 08:41:46

回答

0

您可以在AsyncTask的構造函數中傳遞它們,如下所示:

public class ProcessTask extends AsyncTask<Void, Integer, String>{ 
    String s1, s2, s3, s4; 

    public ProcessTask(String str1, String str2, String str3, String str4) { 
     // TODO Auto-generated constructor stub 
     s1 = str1; 
     s2 = str2; 
     s3 = str3; 
     s4 = str4; 

    } 

    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     //do something with strings 
     super.onPreExecute(); 
    } 

    @Override 
    protected String doInBackground(Void... params) { 
     // TODO Auto-generated method stub 

     //your code 

     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     // TODO Auto-generated method stub 

     super.onPostExecute(result); 
    } 


} 

電話爲:

ProcessTask p =new ProcessTask(s1, s2, s3, s4); 
p.execute(); 

希望這有助於。

1

一種方法是,您可以使用構造函數獲取變量,並在創建對象時傳遞變量。 例如,

public class SapleAsynctask extends AsyncTask<Void, Void, Boolean> { 
public SapleAsynctask(String s1, String s2, String s3, String s4) { 
this.s1 = s1; 
. 
. 
. 
    } 
} 

如果你想獲得doInBackground()同時調用asynctask.excecute([])爲此,你可以傳遞參數的數據,

public class SapleAsynctask extends AsyncTask<String, Void, Boolean> { 
@Override 
    protected Boolean doInBackground(String... params) { 
S1 = params[0]; 
s2 = params[1]; 
. 
. 

     return false; 
    } 
} 

,並調用的AsyncTask使用

SapleAsynctask sapleAsynctask = new SapleAsynctask(); 
sapleAsynctask .excecute(new String[] {"s1", "s2", "s3", "s4"}); 
1

步驟1.在你的AsyncTask的doInBackground方法解析PARAMS那樣:

public class MyAsyncTask extends AsyncTask<String, Void, Void> { 
    // ... 

    @Override 
    protected String doInBackground(String... params) { 
     String s1 = params[0]; 
     String s2 = params[1]; 
     // ... 

     return null; 
    } 

步驟2.當執行的AsyncTask - 通過String []數組:

myAsyncTask.execute(new String[] {s1, s2, s3, s4}); 

附加信息。有時候您需要傳遞不同類型的參數對象。要做到這一點,你需要傳遞的對象[]數組是這樣的:

myAsyncTask.execute(new Object[] {myObj1, s2, myObj3, s4}); 

和解析此數組中您的AsyncTask的doInBackground方法是這樣的:使用doInBackground它

public class MyAsyncTask extends AsyncTask<String, Void, Void> { 
    // ... 

    @Override 
    protected String doInBackground(Object... params) { 
     MyObject myObj1 = (MyObject) params[0]; 
     String s2 = (String) params[1]; 
     // ... 

     return null; 
    }