在做个小应用,就是一个移动交通查询系统,客户端(以火车车次查询为例)向服务器端servlet发送查询数据,servlet调用dao类访问数据库得到查询结果并返回给客户端,如图所示,客户端查询车次为“D2008”的信息,之后查询到的数据便通过table的方式展现给用户
midlet客户端是根据接收到的数据(json数组)一次性的,就是把客户端返回的json格式全部数据生成table展现给用户的,生成table时会耗用手机内存,处理的数据量越大,耗用内存就越大,足够大时,手机处理不过来就死机(会出现常见的out of memory),而目前绝大多数的手机处理能力有限。
那么,问题来了,请看上图中的表D2008,这个车次经过的站点就比较少,也就是说服务器端返回给客户端的数据库查询结果的数据量就小,手机上生成数据表就很顺利,然而,有些车次的信息量非常大,即经过的站点很多(有的经过二十几个站点),此时servlet将这些大量查询结果返回给客户端时,由于客户端处理(数据生成table)能力有限,所以很可能就死机了,这就是问题所在。
我现在想的解决方法是:控制一下客户端的这个table:当(还以车次查询为例)经过站点超过15个时(即数据表中超过15行时)就不再显示,其实就是在客户端接收json数据时“做手脚”:判断一下json数组长度,当json数组中的元素个数超过15个时,就停止接收,处理已收到的json数据,生成table,然后在UI展示上就在这个table的下方添加一个“更多”的button,当用户想看更多关于这个车次的信息时,点一下“更多”的button,然后客户端就再次请求服务器,关键问题这时该怎么与服务器端servlet进行交互?