1.同步针对于处理信息量很小的情况,也就是说如果不需要花费什么时间就能马上显示,例如本地的字符串处理。那如果是非常耗时的处理,例如下载、处理图片、大计算等,那么肯定需要异步加载,加载完成后同步显示到列表中;
2.java中有同步的概念,Android中目前没有同步加载数据这种做法,Android中一般都是异步加载,操作一些网络数据,加载大图片等耗时的操作,必须要异步加载,就是另开一个线程,不要在主线程有耗时操作,要不会发生ANR.
如以下代码:
class updatelocationTask extends AsyncTask<String, Integer, Response> {
@Override
protected void onPreExecute() {
//这里写执行doInBackground方法之前要做的什么,比如说 弹出ProgressDialog
}
@Override
protected Response doInBackground(String... params) {
//这里就是线程里面的方法了,比如说建立连接,请求数据
}
@Override
protected void onPostExecute(Response result) {
//这里可以根据返回值来确定怎么操作,比如说刷新列表或者提示用户网络不畅,是否再次刷新
}
}
另一个例子,点击按钮执行HTTP请求然后跳转下一页:
同步:发送http请求→获取返回结果→分析结果→跳转下一页
异步:发送http请求→跳转下一页(不需要等待请求结果,对结果的处理在另一个线程中)
注:若是的同步的话会卡死ui界面,所以在Android4.1以后不允许使用同步请求了。