在J2ME的开发中,网络通讯交互是开发中的重点和难点,这里以Http通讯为例,举例说明一些优化的技巧。
1、关闭流
关闭流是非常重要的,特别对S40的机子,S40不像S60那样能自动关闭流,有时在S60的机子跑得好好的软件一拿到S40运行几次网络连接就抛出异常,其中一个原因即是流的处理。
2、异常处理
有时程序读取服务端数据会抛出异常,此时,用户又重新刷新或重新加载数据,用户不断地请求,这样的操作显然是可怕的,可用skip(long l)这个方法来处理,同时结合线程同步,这样便能更好优化网络交互。
3、线程同步
线程同步这里不多说,下面简单用例子来说明处理的过程
HttpThread实现Runnable接口
private HttpThread httpThread;
public synchronized void httpThreadSubmit() {
// clean and stop
if (httpThread != null){
httpThread.stop();
httpThread = null;
}
httpThread = new HttpThread();
new Thread(httpThread).start();
}
public class HTTPThread implements Runnable {
private boolean isStop;
public HTTPThread() {
isStop = false;
}
public void run() {
try {
// isStop用于处理线程
if (isStop)
return;
// HttpConnection 处理
// 输出流
// 读取流并对流进行解析处理,可用isStop在中间中断流
} catch (Excption e) {
// 也可加个内存抛出,回收内存System.gc();
// skip(流长度);
} finally {
// 关闭流
// 关闭HttpConnection
// 对内存回收等
}
}
public void stop() {
isStop = true;
}
}
导读
手机中的重定向问题及处理 http://fonter.iteye.com/blog/400836
J2ME如何通过cmwap直接访问互连网 http://fonter.iteye.com/blog/400868
J2ME开发中由WAP网关带来的cookie问题 http://fonter.iteye.com/blog/399105
安装JAD时提示JAD无效原因之一 http://fonter.iteye.com/blog/400888
解决Eclipse无法调试J2ME程序的配置方法 http://fonter.iteye.com/blog/405697
J2ME模拟器加载RMS时突然失效的原因 http://fonter.iteye.com/blog/407576
J2ME飞信协议分析(初稿) http://fonter.iteye.com/blog/408385