如何在抛出网络异常时处理流

时间:2015-08-07 17:43:51

标签: android multithreading

我构建了一个应用程序,我需要在很多地方处理网络异常。我想知道一种方法。

在我的Activity我有类似的内容:

onCreate {
   ...
   fetchData(); // Needs Internet
   processData();
   showData();
}

fetchData()方法中,它可能无法获取它,因为没有连接或信号差。在这种情况下,我会显示AlertDialog并告诉用户存在网络问题,当他点击Ok时会尝试再次获取它。

问题是这个线程会运行fetchData(),构建并显示Dialog,但它会继续运行processData(),依此类推。这个方法fetchData()在我的应用程序中被称为两个不同的位置,所以理想的做法是停止此线程,直到它再次尝试并加载数据。我可以在这里使用什么逻辑?

我知道这可能是一个简单的问题,但我坚持下去并且我不知道任何适用的模式。我应该传播此错误并在调用fetchData()时处理它,还是有办法在加载数据之前停止此线程?

编辑 fetchData() 正在运行,它会运行后台线程来下载数据,并等待它完成以返回响应或只是null。到目前为止,如果有错误我只是得到null并且它记录了网络错误。我想知道如何处理这个并保持流程

1 个答案:

答案 0 :(得分:0)

只需使用以下代码修改代码:

onCreate {
   ...
    AsyncTask task = new AsyncTask()
     {
             @Override
            protected Object doInBackground(Object[] objects)
            {
                 Try{
                     fetchData();} catch(Exception e) {e.printStackTrace();}
            }
     }
             processData();
            showData();
    }