从服务器上的数据库写入一个将电话号码和消息下载到客户端的应用程序。
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? 我需要这个数组到下一个按钮。
如果我写错了,请告诉我。
答案 0 :(得分:0)
您错过了AsyncTask的全部内容。它不返回值,因为它并行执行。如果你要等到它完成,那么根本不会使用AsyncTask。任务完成后需要完成的任何代码都应放在onPostExecute中。