Java 我的应用程序冻结,如何在其中实现线程?
你能帮我弄清楚如何实现这个线程,这样它在等待服务器的回答时不会冻结吗? 我已经尝试了5个小时左右,我很简单,找不到一种方法在线程中使用它,然后返回它,用tv.setText()设置文本Java 我的应用程序冻结,如何在其中实现线程?,java,android,multithreading,freeze,Java,Android,Multithreading,Freeze,你能帮我弄清楚如何实现这个线程,这样它在等待服务器的回答时不会冻结吗? 我已经尝试了5个小时左右,我很简单,找不到一种方法在线程中使用它,然后返回它,用tv.setText()设置文本 将负责向服务器发出请求的代码放在单独的线程中: Thread thread = new Thread() { @Override public void run() { try { // put your socket operations here
将负责向服务器发出请求的代码放在单独的线程中:
Thread thread = new Thread() {
@Override
public void run() {
try {
// put your socket operations here
} catch (InterruptedException e) {
// handle exception if you need
}
}
};
thread.start();
这就是你要找的。从“帮助”页面:
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
私有类下载文件任务扩展异步任务{
受保护的长doInBackground(URL…URL){
int count=url.length;
长totalSize=0;
for(int i=0;i
请记住,
doInBackground
在单独的线程中运行,onPostExecute
在doInBackground
完成后在UI线程中运行。您是否尝试过out.flush()代码>在out.println(“更新”)之后代码>?问题是不允许您从UI线程以外的其他线程对UI进行更改。您需要使用一个处理程序或其他东西来提醒UI线程视图更新。
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}