Android AsyncTask在完成工作后返回值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 + "
";
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()+"
");
}
}
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?我需要这个数组到下一个按钮。
如果我写错了,请告诉我。
答案
你错过了AsyncTask的全部内容。它不返回值,因为它并行执行。如果你要等到它完成,那么根本不会使用AsyncTask。任务完成后需要完成的任何代码都应该放在onPostExecute中。
以上是关于Android AsyncTask在完成工作后返回值的主要内容,如果未能解决你的问题,请参考以下文章
201709013工作日记--Android异步通信AsyncTask
AsyncTask 完成后关闭 Activity 并返回父 Activity