Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 禁用wifi时AsyncTask出错_Android_Rss_Android Asynctask - Fatal编程技术网

Android 禁用wifi时AsyncTask出错

Android 禁用wifi时AsyncTask出错,android,rss,android-asynctask,Android,Rss,Android Asynctask,我正在解析我的应用程序中的rss源,并尝试在加载rss时使用进度条。这是我第一次使用AsyncTask。当我按下rss按钮时,对话框出现,并在rss加载时停止。因此,它正在工作。但是,我从日志中检查,当wifi关闭时,我收到以下错误: 06-22 19:43:16.744: ERROR/OSFP.News(2316): java.lang.RuntimeException: java.net.ConnectException: feeds.feedburner.com/209.85.146.11

我正在解析我的应用程序中的rss源,并尝试在加载rss时使用进度条。这是我第一次使用AsyncTask。当我按下rss按钮时,对话框出现,并在rss加载时停止。因此,它正在工作。但是,我从日志中检查,当wifi关闭时,我收到以下错误:

06-22 19:43:16.744: ERROR/OSFP.News(2316): java.lang.RuntimeException: java.net.ConnectException: feeds.feedburner.com/209.85.146.118:80 - Network is unreachable
06-22 19:43:16.744: ERROR/OSFP.News(2316): java.lang.RuntimeException: java.lang.RuntimeException: java.net.ConnectException: feeds.feedburner.com/209.85.146.118:80 - Network is unreachable
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at com.example.async.DomFeedParser.parse(DomFeedParser.java:54)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at com.example.async.nea.loadFeed(nea.java:62)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at com.example.async.nea.onCreate(nea.java:51)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at android.os.Looper.loop(Looper.java:123)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at android.app.ActivityThread.main(ActivityThread.java:3687)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at java.lang.reflect.Method.invokeNative(Native Method)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at java.lang.reflect.Method.invoke(Method.java:507)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at dalvik.system.NativeStart.main(Native Method)
06-22 19:43:16.744: ERROR/OSFP.News(2316): Caused by: java.lang.RuntimeException: java.net.ConnectException: feeds.feedburner.com/209.85.146.118:80 - Network is unreachable
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at com.example.async.BaseFeedParser.getInputStream(BaseFeedParser.java:32)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at com.example.async.DomFeedParser.parse(DomFeedParser.java:26)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     ... 15 more
06-22 19:43:16.744: ERROR/OSFP.News(2316): Caused by: java.net.ConnectException: feeds.feedburner.com/209.85.146.118:80 - Network is unreachable
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:207)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:437)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at java.net.Socket.connect(Socket.java:1002)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:75)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:322)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:285)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:267)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1018)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:512)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     at com.example.async.BaseFeedParser.getInputStream(BaseFeedParser.java:30)
06-22 19:43:16.744: ERROR/OSFP.News(2316):     ... 16 more
此外,我的asyncTask在按下按钮开始在我的主要活动中加载新闻时使用:

nea = (Button) findViewById(R.id.nea);
        nea.setOnClickListener(new Button.OnClickListener(){

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    new BackgroundAsyncTask().execute();
                    nea.setClickable(false);
                }});


//.......
public class BackgroundAsyncTask extends
       AsyncTask<Void, Integer, Void> {
          private ProgressDialog dialog;
        int myProgress;

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            nea.setClickable(true);
             dialog.dismiss();

        }

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
              dialog = ProgressDialog.show(main.this, "", "Loading. Please wait...", true);
            myProgress = 0;
        }

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub
            Intent newActivity111 = new Intent(main.this, nea.class);     
            startActivity(newActivity111);
            return null;
        }



    }

不要捕获异常类

catch (Exception e) {
    throw new RuntimeException(e);
}
相反,您应该优雅地处理连接错误


查看此处以了解如何正确操作:

捕获并记录了预期的异常-问题是什么?因此,我的logcat中的错误没有问题?请参阅下面mibollma的答案。抛出RuntimeException不是解决问题的方法-对错误采取措施(例如显示带有错误消息的Toast弹出窗口).我使用asyncTask的方式正确吗?>@我曾尝试在catch中使用toast,但eclipse说它不用于DomFeedParser@milbollma您建议我在这里使用什么?如何捕获无法连接时可能遇到的IOError并向OnPostExecute返回错误代码我已尝试捕获(IOD异常){Log.d(“OSFP.News”,d.getMessage(),d);但是我得到的是未处理的异常类型ParserConfiguration exception您必须同时捕获…IOException和ParserConfiguration exception。对于第二个,您现在可以抛出RuntimeException,但对于第一个,则不能。
catch (Exception e) {
            throw new RuntimeException(e);
        } 
catch (Exception e) {
    throw new RuntimeException(e);
}