我构建了一个应用程序,我需要在很多地方处理网络异常。我想知道一种方法。
在我的Activity
我有类似的内容:
onCreate {
...
fetchData(); // Needs Internet
processData();
showData();
}
在fetchData()
方法中,它可能无法获取它,因为没有连接或信号差。在这种情况下,我会显示AlertDialog
并告诉用户存在网络问题,当他点击Ok
时会尝试再次获取它。
问题是这个线程会运行fetchData()
,构建并显示Dialog
,但它会继续运行processData()
,依此类推。这个方法fetchData()
在我的应用程序中被称为两个不同的位置,所以理想的做法是停止此线程,直到它再次尝试并加载数据。我可以在这里使用什么逻辑?
我知道这可能是一个简单的问题,但我坚持下去并且我不知道任何适用的模式。我应该传播此错误并在调用fetchData()
时处理它,还是有办法在加载数据之前停止此线程?
编辑 fetchData()
正在运行,它会运行后台线程来下载数据,并等待它完成以返回响应或只是null。到目前为止,如果有错误我只是得到null并且它记录了网络错误。我想知道如何处理这个并保持流程
答案 0 :(得分:0)
只需使用以下代码修改代码:
onCreate {
...
AsyncTask task = new AsyncTask()
{
@Override
protected Object doInBackground(Object[] objects)
{
Try{
fetchData();} catch(Exception e) {e.printStackTrace();}
}
}
processData();
showData();
}