Я начинаю создавать приложение, которое некоторые действия будут получать & после публикации данных с сервера. Например, в активности входа будет указано имя пользователя и пароль, чтобы попытаться войти в систему, активность списка будет загружать элементы из базы данных сервера. Теперь для каждой связи между сервером и приложением я использую один AsyncTask
, чтобы сделать это. Для целей повторного использования у меня есть базовый класс MyAsyncTask
, и каждая реальная задача расширяет его.Как спроектировать AsyncTasks для сетевых приложений Android
public class MyAsyncTask extends AsyncTask<String, Integer, String>{
protected String path;
public MyAsyncTask(Activity activity, String path){
this.path=path;//each task will connect to its own url path
}
@Override
protected String doInBackground(String... params) {
String ret=null;
try {
ret=postData(params);
} catch (IOException e) {
e.printStackTrace();
}
return ret;
}
public String postData(String... params) throws IOException{
String httpUrl=Constants.SERVER_URL+path;
HttpPost httpRequest=new HttpPost(httpUrl);
List<NameValuePair> httpparams=formHttpParams(params);
//create HttpClient and connect to server and post data
... ...
}
public ArrayList<NameValuePair> formHttpParams(String params[]){
return new ArrayList<NameValuePair>();//sub classes need to override the parameter assignment
}
//protected void onPostExecute(String result) {}//override this for response handling
}
Мой вопрос заключается в том, что я могу использовать один AsyncTask
, чтобы сделать это? В противном случае у меня будет много подкласс, расширяющийся MyAsyncTask
. Это правильный способ борьбы с сетевыми приложениями Android? (В настоящее время, если я хочу сделать один класс, у меня будут сложные процессы анализа параметров и управление несколькими соответствующими путями.)
Кроме того, если я все еще использую несколько подклассов для расширения этого базового класса, будет ли один «сеанс» между моим приложением и сервером, поэтому я могу сохранить идентификационную информацию пользователя (например, имя пользователя) в части сеанса сервера? (Это вопрос «стороны», поскольку я могу поэкспериментировать с этим, конечно ...)
Отъезд Volley .. и есть много других подобных ему. Не заново изобретайте колесо, особенно если вы никогда не строили автомобиль раньше. – 323go
Приятно знать официальное решение Volley. Это должен быть неотъемлемый компонент вместе с AsyncTask ... PS, проклинайте этих downvoters, hah ... – mrmoment
Android-Query - это вариант и кажется более простым в использовании для людей из Интернета и чистой Java, таких как я :) – mrmoment