java 开发Android的APP,开启线程读取数据,一但网络中断,APP便停止运行,请问如何解决?

代码如下::Handlerhandler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){//获取数据... 代码如下::
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
//获取数据的后续操作
showlist();
super.handleMessage(msg);
}
};

class LoadFailureHandler implements Runnable {
public void run() {
showurl();
handler.sendEmptyMessage(0);
};
};

//以下是线程开启,读取数据
Thread loadThread = new Thread(new LoadFailureHandler());
loadThread.start();

问题1: 在网络正常的情况下,本程序可以正常运行,一但网络中断,线程开启便APP便立即停止运行,请问如何解决?

问题2: 在读取数据的过程中,如果数据没有下载完,我再次开启线程读取数据,APP也会立即停止运行,请问如何解决?

请勿复制粘贴答案,谢谢各位大神!
展开
 我来答
QQMSD8
2015-08-18 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部

是这样的,你在线程中读取网络数据,如果网络中断了,就会抛出一系列的异常

这时候,你就要捕获这些异常做不同的提示

以下是一些网络连接中常见的异常

// 处理网络异常
public String ExceptionCode(Exception e) {
if(e instanceof HttpException) {
return context.getString(R.string.networkFailure);      // 网络异常

}else if (e instanceof SocketTimeoutException) {
return context.getString(R.string.responseTimeout);     // 响应超时

}else if (e instanceof ConnectTimeoutException) {
return context.getString(R.string.requestTimeout);      // 请求超时

}else if (e instanceof IOException) {
return context.getString(R.string.networkError);      // 网络异常

}else if (e instanceof  JSONException) {
return context.getString(R.string.json_error);        //json格式转换异常

}else {
return context.getString(R.string.canNotGetConnected);  // 无法连接网络
}
}

已经封装好了,你直接调用就好了

更多追问追答
追问
你好,请问如何调用呢?能否帮忙写一下,完善到我的代码中?谢谢您!
追答
你把代码发我看看,我帮你改一下吧
小傻

2015-08-17 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31134
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部
试试加一个判断网络中断的捕捉异常
追问
我不太懂这个,您能帮我修正下我这段代码么??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式