AsyncTask是什么
AsyncTask 允许对用户界面执行异步操作。 它会先阻塞工作线程中的操作,然后在 UI 线程中发布结果,而无需您亲自处理线程和/或处理程序。
其实AsyncTask就是安卓帮我们对异步处理机制进行了封装的一个类,方便我们进行异步操作。
1、可以使用泛型指定参数类型、进度值和任务最终值
2、方法 doInBackground() 会在工作线程上自动执行
3、onPreExecute()、onPostExecute() 和 onProgressUpdate() 均在 UI 线程中调用
4、doInBackground() 返回的值将发送到 onPostExecute()
5、您可以随时在 doInBackground() 中调用publishProgress(),以在 UI 线程中执行 onProgressUpdate()
6、您可以随时取消任何线程中的任务
必须实现doInBackground(),此处代码不在主线程(UI线程)运行,参数类型为泛型参数的第一个(另外注意参数是可变参数):
private class ClientTask extends AsyncTask<String,Void,String>
{
@Override
protected String doInBackground(String... params) {
}
}
Socket是什么
Socket是网络连接时使用的接口。有服务器端和客户机端:ServerSocket用于服务器端,Socket是客户端
服务器端:
① 创建ServerSocket对象,绑定监听端口
② 通过accept()方法监听客户端请求(accept是阻塞式的)
③ accept获得一个连接(socket实例)后,可以通过输入流读取客户端发送的信 息,通过输出流向客户端发送乡音信息
④通常用死循环保证一直在线
客户端
① 创建Socket对象,指明需要连接的服务器的地址和端口号
② 可以通过输出流想服务器端发送信息,通过输入流获取服务器响应的信息
简单的实例
下面来做一个简单的实例,首先构建一个服务器,它只接收来自客户端的信息并把它显示在textView当中
服务器端
import android.os.AsyncTask;
import android.os.Bu