title: Android Asynctask from second activity
body: <p>I am creating an Android app. First of all, I have two activities. </p>
  
  <p>The first one is the login screen and the second one is the main view of my app with list and so on. I also have a remote DB to get data from it and I use AsyncTask class to get this kind of data. If I execute only the login, it works fine. Furthermore, if I only execute the main view (querying data to the db) it works fine too.</p>
  
  <p>The problem comes when I execute both views and I call the asynctask from the second one. If I do not execute AsyncTask from the main view, everything is nice. It seems like I can't execute AsyncTask outside of the main thread (I have read some information about that) but I can't really find a solution. </p>
  
  <p>Here is my AsyncTask code:</p>
  
  <pre><code>package com.hissacclaim.pfc.hissacclaim;
  
  import android.os.AsyncTask;
  import android.util.Log;
  
  import org.apache.http.HttpEntity;
  import org.apache.http.HttpResponse;
  import org.apache.http.NameValuePair;
  import org.apache.http.client.HttpClient;
  import org.apache.http.client.entity.UrlEncodedFormEntity;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.impl.client.DefaultHttpClient;
  import org.apache.http.message.BasicNameValuePair;
  import org.json.JSONArray;
  import org.json.JSONException;
  import org.json.JSONObject;
  
  import java.io.BufferedReader;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import java.util.ArrayList;
  
  class DownloadTask extends AsyncTask&lt;String, Void, JSONArray&gt; {
  
      private String urlWebService="http://hissacclaim.morwebs.com/";
      private String type=null;
      private String query=null;
      private String columns=null;
      private String colValues=null;
      private String table=null;
      private String condition=null;
      private String user=null;
      private String password=null;
      private String logincode=null;
  
  
  public int changeUrlMySQL(String url){
      this.urlWebService= url;
      return 1;
  }
  
  public int reset(){
      this.urlWebService="http://hissacclaim.morwebs.com/";
      this.type=null;
      this.query=null;
      this.columns=null;
      this.colValues=null;
      this.table=null;
      this.condition=null;
      this.user=null;
      this.password=null;
      return 1;
  }
  
  public int login(String user, String password){
      this.type= "login";
      this.user= user;
      this.password= password;
      return 1;
  }
  
  public int set_logincode(String code){
      this.logincode= code;
      return 1;
  }
  
  public String get_logincode(){
      return this.logincode;
  }
  
  public String type_last_petition() {
      return this.type;
  }
  
  public int insertRow(String table, String columns, String colValues){
      this.type= "insertRow";
      this.table= table;
      this.columns= columns;
      this.condition= null;
      this.colValues= colValues;
      return 1;
  }
  
  public int deleteRow(String table, String columns, String condition, String colValues){
      this.type= "deleteRow";
      this.table= table;
      this.columns= columns;
      this.condition= condition;
      this.colValues= colValues;
      return 1;
  }
  
  public int searchByColumn(String table, String columns, String condition, String colValues){
      this.type= "searchByColumn";
      this.table= table;
      this.columns= columns;
      this.condition= condition;
      this.colValues= colValues;
      return 1;
  }
  
  public int getTable(String table){
      this.type= "getTable";
      this.table= table;
      this.columns= null;
      this.condition= null;
      this.colValues= null;
      return 1;
  }
  
  public int genericQuery(String table, String columns, String condition, String colValues){
      this.type= "genericQuery";
      this.table= table;
      this.columns= columns;
      this.condition= condition;
      this.colValues= colValues;
      return 1;
  }
  
  
  protected JSONArray doInBackground(String... urls) {
      String result = "";
      InputStream is = null;
  
      try{
          MCrypt mcrypt = new MCrypt();
  
          ArrayList&lt;NameValuePair&gt; nameValuePairs = new ArrayList&lt;NameValuePair&gt;();
          if(this.type!=null)nameValuePairs.add(new BasicNameValuePair("type",MCrypt.bytesToHex(mcrypt.encrypt(this.type))));
          if(this.logincode!=null)nameValuePairs.add(new BasicNameValuePair("logincode",this.logincode));
          if(this.query!=null)nameValuePairs.add(new BasicNameValuePair("query",this.query));
          if(this.columns!=null)nameValuePairs.add(new BasicNameValuePair("columns",this.columns));
          if(this.colValues!=null)nameValuePairs.add(new BasicNameValuePair("values",this.colValues));
          if(this.table!=null)nameValuePairs.add(new BasicNameValuePair("table",this.table));
          if(this.condition!=null)nameValuePairs.add(new BasicNameValuePair("condition",this.condition));
          if(this.user!=null)nameValuePairs.add(new BasicNameValuePair("user",MCrypt.bytesToHex(mcrypt.encrypt(this.user))));
          if(this.password!=null)nameValuePairs.add(new BasicNameValuePair("password",MCrypt.bytesToHex(mcrypt.encrypt(this.password))));
  
  
          HttpClient httpclient = new DefaultHttpClient();
          HttpPost httppost=null;
  
          httppost = new HttpPost(this.urlWebService + "dbconnection.php");
  
          httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
          HttpResponse response = httpclient.execute(httppost);
          HttpEntity entity = response.getEntity();
          is = entity.getContent();
      }catch(Exception e){
          Log.e("log_tag", "Error in http connection " + e.toString());
          return null;
      }
  
      try{
          BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
          StringBuilder sb = new StringBuilder();
          String line = null;
          while ((line = reader.readLine()) != null) {
              sb.append(line + "\n");
          }
          is.close();
  
          result=sb.toString();
      }catch(Exception e){
          Log.e("log_tag", "Error converting result "+e.toString());
          return null;
      }
  
  
      try{
          JSONArray jArray = new JSONArray(result);
          for(int i=0;i&lt;jArray.length();i++){
              JSONObject json_data = jArray.getJSONObject(i);
              /*Log.i("log_tag","id: "+json_data.getInt("id")+
                              ", name: "+json_data.getString("name")+
                              ", sex: "+json_data.getInt("sex")+
                              ", birthyear: "+json_data.getInt("birthyear")
              );*/
          }
          return jArray;
      }catch(JSONException e){
          Log.e("log_tag", "Error parsing data "+e.toString());
          return null;
      }
  
  
  }
  //This Method is called when Network-Request finished
  protected void onPostExecute(String serverData) {
      //textView.setText(serverData);
      System.out.print("FINAL DE DLTASK");
  
  }
  }
  </code></pre>