简体   繁体   English

禁用wifi时AsyncTask错误

[英]Error with AsyncTask when wifi is disabled

im parsing rss feed in my app and i have tried to use a progress bar while loading the rss.This is my first time using AsyncTask.when im pressing the button for the rss, the dialog appears and it stops when the rss load.So, its working..But,i checked from my logcat that when the wifi is turned off,im getting the following error: 我在我的应用程序中解析rss feed,我试图在加载rss时使用进度条。这是我第一次使用AsyncTask。当我按rss的按钮时,对话框出现,当rss加载时它停止。 ,它可以正常工作..但是,我从我的logcat中检查了当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

in my news activity i have used that for the turned off wifi: 在我的新闻活动中,我已将其用于关闭的wifi:

catch (Throwable t){
            Log.e("OSFP.News",t.getMessage(),t);

            Toast.makeText(nea.this, "Please enable your wifi",
                    Toast.LENGTH_SHORT).show();
            finish();
        }

Also,my asyncTask is used when im pressing the button to start loading the news in my main activity: 另外,当我按下按钮开始在我的主要活动中加载新闻时,将使用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;
        }



    }

also,in my DomFeedParser class, i have that exception: 另外,在我的DomFeedParser类中,我有一个例外:

catch (Exception e) {
            throw new RuntimeException(e);
        } 

Don't catch the Exception class 不要抓住Exception类

catch (Exception e) {
    throw new RuntimeException(e);
}

Instead you should handle the connection error gracefully 相反,您应该优雅地处理连接错误

Look here to see how to do it right: http://source.android.com/source/code-style.html 看看这里,看看如何正确做: http : //source.android.com/source/code-style.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM