Android AsyncTask在完成工作后返回值

时间:2018-03-02 19:30:30

标签: java android android-asynctask

这是我的第一篇文章。 我为不好的英语道歉。 我已经阅读了很多关于这个主题的问题。

从服务器上的数据库写入一个将电话号码和消息下载到客户端的应用程序。

public class Connect extends AsyncTask<String,Integer,ArrayList<CUSTOMER>>{
ArrayList<CUSTOMER> clients= new ArrayList<CUSTOMER>();
 if(type.equals("login"))
    {
    //... conection code
    while((line = bufferedReader.readLine())!= null) {
                if (line.equals(error)) {

                    break;
                } else {

                    result += line + "\n";                        
                    String podziel = new String(line);
                    String[] tab = null;
                    tab= podziel.split(";");
                    for (int i = 0; i < tab.length; i++) {
                        Log.e("peta "+Integer.toString(i), tab[i]);
                    }
                    licznik++;
                    CUSTOMER C= new CUSTOMER(Integer.parseInt(tab[0]), tab[1], tab[2]);
                    clients.add(C);
                    Thread.sleep(3000);
                    //Log.e("k "  , clients.get(0).getId()+" "+clients.get(0).getNumer()+" "+clients.get(0).getDescryption()+"\n");

                }
            }

            return clients;
}

1:

public class MainActivity extends AppCompatActivity {

ArrayList<CUSTOMER> to_sent= new ArrayList<CUSTOMER>();

    public void conn(View view)  {
    String type="login";
    Connect connect = new Connect(this, type);
    to_sent=connect.execute(domena,  DB_name, name, password, ip).get();
    }
 }

2:

public class MainActivity extends AppCompatActivity {

ArrayList<CUSTOMER> to_sent= new ArrayList<CUSTOMER>();

    public void conn(View view)  {
    String type="login";
    Connect connect = new Connect(this, type);
    connect.execute(domena,  DB_name, name, password, ip).get();
    to_sent=connect.clients;
    }
 }

3:

    public void sent(View view) {
    String type="sent";
    Connect connect = new Connect(this, type);
    connect.clients=to_sent;
    connect.execute(domena,  DB_name, name, password, ip);


}

如果他使用第一种方法,则无法看到UI块和ProgresDialog。另一个在我看来不正确,但它与ProgresDialog正常工作。 尽可能简单地将ArrayList客户端返回到Main Activity? 我需要这个数组到下一个按钮。

如果我写错了,请告诉我。

1 个答案:

答案 0 :(得分:0)

您错过了AsyncTask的全部内容。它不返回值,因为它并行执行。如果你要等到它完成,那么根本不会使用AsyncTask。任务完成后需要完成的任何代码都应放在onPostExecute中。