异步是相对于同步而言的,顾名思义,同步就是各个通讯节点之间有统一的时钟,按照相同的时钟工作,异步相反,各节点之间没有统一的时钟,每个节点按照自己内部的时钟工作。
android在所有Thread当中,有一个Thread,我们称之为UI Thread。UI
Thread在Android程序运行的时候就被创建,是一个Process当中的主线程Main
Thread,主要是负责控制UI界面的显示、更新和控件交互。在Android程序创建之初,一个Process呈现的是单线程模型,所有的任务都在一个线程中运行。因此,我们认为,UI
Thread所执行的每一个函数,所花费的时间都应该是越短越好。而其他比较费时的工作(访问网络,下载数据,查询数据库等),都应该交由子线程去执行,以免阻塞主线程。
目前没有同步加载数据这种做法,如果网络延迟主界面UI就卡死了,之后用户不耐烦就只能强行关闭了,卡死的时候按键都没反应的。
一个简单的的多线程
class updatelocationTask extends AsyncTask<String, Integer, Response>{
protected void onPreExecute() {
//这里写执行doInBackground方法之前要做的什么,比如说d出ProgressDialog
}
}
@Override
protected Response doInBackground(String... params) {
//这里就是线程里面的方法了,比如说建立连接,请求数据
}
}
protected void onPostExecute(Response result) {
//这里可以根据返回值来确定怎么 *** 作,比如说刷新列表或者提示用户网络不畅,是否再次刷新
}
}
}
}
在请求第二页及以后页数的时候带多一个参数,就是第一次请求到的数据的最后一条的id,当然服务端的每个数据都有id,id根据你的排序规律,排在前面的可以设置为大点的,最后面的为最小的。服务端根据请求过来id,就可以确认已经发送了此id之前的数据(包括id这条数据,id之前的数据有可能有新的数据插入,但是此时客户端需要的只是之后的数据,所以直接把id之后的10条数据发给客户端即可)。此外,如果客户端想获得新插入的数据,只要请求第一页就行了。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)