-2

I am trying to make an RSS News Reader app and I am using AsyncTask to use threads for adding new websites to an RSS feed list. But whenever I put in the new URL and press 'ADD', the app crashes. The LogCat says --

threadid 12: Thread exiting with uncaught exception", "AsyncTask #2 FATAL EXCEPTION" and java.Lang.RuntimeException: Error while executing doInBackground()

Please help! (P.S. I am using ADT.)

package com.rssnews;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.lang.Exception;

public class AddNewFeed extends Activity {
Button btnSubmit;
Button btnCancel;
EditText txtUrl;
TextView textViewMessage;

RSSParser rssParser = new RSSParser();
RSSFeed rssFeed;

private ProgressDialog pDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.addnewfeed);

    btnSubmit = (Button) findViewById(R.id.btnSubmit);
    btnCancel = (Button) findViewById(R.id.btnCancel);
    txtUrl = (EditText) findViewById(R.id.txtUrl);
    textViewMessage = (TextView) findViewById(R.id.textViewMessage);

    btnSubmit.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            try{
            String url = txtUrl.getText().toString();
            Log.d("URL Length", "" + url.length());
            if (url.length() > 0) {
                textViewMessage.setText("");
                String urlPattern = "^http(s{0,1})://[a-zA-Z0-9_/\\-\\.]+\\.([A-Za-z/]{2,5})[a-zA-Z0-9_/\\&\\?\\=\\-\\.\\~\\%]*";
                if (url.matches(urlPattern)) {
                    new loadRSSFeed().execute(url);
                } else {
                    textViewMessage.setText("Please enter a valid url");
                }
            } else {
                textViewMessage.setText("Please enter website url");
            }}
            catch(Exception e){
                finish();
            }
        }
    });

    btnCancel.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            finish();
        }
    });
}

/**
 * Background Async Task to get RSS data from URL
 * */
class loadRSSFeed extends AsyncTask<String, String, String> {

    /**
     * Before starting background thread Show Progress Dialog
     * */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(AddNewFeed.this);
        pDialog.setMessage("Fetching RSS Information ...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();

    }

    /**
     * getting
     * */
    @Override
    protected String doInBackground(String... args) {
        String url = args[0];
        rssFeed = rssParser.getRSSFeed(url);
        Log.d("rssFeed", " " + rssFeed);
        if (rssFeed != null) {
            Log.e("RSS URL",
                    rssFeed.getTitle() + "" + rssFeed.getLink() + ""
                            + rssFeed.getDescription() + ""
                            + rssFeed.getLanguage());
            RSSDatabaseHandler rssDb = new RSSDatabaseHandler(
                    getApplicationContext());
            WebSite site = new WebSite(rssFeed.getTitle(),
                    rssFeed.getLink(), rssFeed.getRSSLink(),
                    rssFeed.getDescription());
            rssDb.addSite(site);
            Intent i = new Intent(getApplicationContext(),
                    RSSNewsReaderPBActivity.class);
            // send result code 100 to notify about product update
            setResult(100, i);
            startActivity(i);
            return null;
        } else {
            runOnUiThread(new Runnable() {
                public void run() {
                    textViewMessage
                            .setText("Rss url not found. Please check the url or try again");
                }
            });
        }
        return null;
    }

    /**
     * After completing background task Dismiss the progress dialog
     * **/
    protected void onPostExecute(String args) {
        pDialog.dismiss();
        runOnUiThread(new Runnable() {
            public void run() {
                if (rssFeed != null) {
                }
            }
        });
    }
}

@Override
protected void onPause() {
    super.onPause();
    //pDialog.dismiss();
    finish();
}

@Override
public void onBackPressed() {
    finish();
}

}

04-10 13:28:50.250: W/dalvikvm(1853): threadid=12: thread exiting with uncaught exception (group=0xb1a1bb90)
04-10 13:28:50.350: E/AndroidRuntime(1853): FATAL EXCEPTION: AsyncTask #2
04-10 13:28:50.350: E/AndroidRuntime(1853): Process: com.rssnews, PID: 1853
04-10 13:28:50.350: E/AndroidRuntime(1853): java.lang.RuntimeException: An error occured while executing doInBackground()
04-10 13:28:50.350: E/AndroidRuntime(1853):     at android.os.AsyncTask$3.done(AsyncTask.java:300)
04-10 13:28:50.350: E/AndroidRuntime(1853):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
04-10 13:28:50.350: E/AndroidRuntime(1853):     at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
04-10 13:28:50.350: E/AndroidRuntime(1853):     at java.util.concurrent.FutureTask.run(FutureTask.java:242)
04-10 13:28:50.350: E/AndroidRuntime(1853):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-10 13:28:50.350: E/AndroidRuntime(1853):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-10 13:28:50.350: E/AndroidRuntime(1853):     at java.lang.Thread.run(Thread.java:841)
04-10 13:28:50.350: E/AndroidRuntime(1853): Caused by: java.lang.NoClassDefFoundError: org.jsoup.Jsoup
04-10 13:28:50.350: E/AndroidRuntime(1853):     at com.rssnews.RSSParser.getRSSLinkFromURL(RSSParser.java:129)
04-10 13:28:50.350: E/AndroidRuntime(1853):     at com.rssnews.RSSParser.getRSSFeed(RSSParser.java:52)
04-10 13:28:50.350: E/AndroidRuntime(1853):     at com.rssnews.AddNewFeed$loadRSSFeed.doInBackground(AddNewFeed.java:90)
04-10 13:28:50.350: E/AndroidRuntime(1853):     at com.rssnews.AddNewFeed$loadRSSFeed.doInBackground(AddNewFeed.java:1)
04-10 13:28:50.350: E/AndroidRuntime(1853):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
04-10 13:28:50.350: E/AndroidRuntime(1853):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-10 13:28:50.350: E/AndroidRuntime(1853):     ... 3 more
04-10 13:28:50.700: I/Choreographer(1853): Skipped 38 frames!  The application may be doing too much work on its main thread.
04-10 13:28:51.880: I/Choreographer(1853): Skipped 95 frames!  The application may be doing too much work on its main thread.
04-10 13:28:55.320: I/Choreographer(1853): Skipped 49 frames!  The application may be doing too much work on its main thread.
04-10 13:28:56.280: I/Choreographer(1853): Skipped 96 frames!  The application may be doing too much work on its main thread.
04-10 13:28:57.920: E/WindowManager(1853): android.view.WindowLeaked: Activity com.rssnews.AddNewFeed has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{b2524248 V.E..... R.....I. 0,0-563,230} that was originally added here
04-10 13:28:57.920: E/WindowManager(1853):  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:346)
04-10 13:28:57.920: E/WindowManager(1853):  at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)
04-10 13:28:57.920: E/WindowManager(1853):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
04-10 13:28:57.920: E/WindowManager(1853):  at android.app.Dialog.show(Dialog.java:286)
04-10 13:28:57.920: E/WindowManager(1853):  at com.rssnews.AddNewFeed$loadRSSFeed.onPreExecute(AddNewFeed.java:80)
04-10 13:28:57.920: E/WindowManager(1853):  at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
04-10 13:28:57.920: E/WindowManager(1853):  at android.os.AsyncTask.execute(AsyncTask.java:535)
04-10 13:28:57.920: E/WindowManager(1853):  at com.rssnews.AddNewFeed$1.onClick(AddNewFeed.java:45)
04-10 13:28:57.920: E/WindowManager(1853):  at android.view.View.performClick(View.java:4424)
04-10 13:28:57.920: E/WindowManager(1853):  at android.view.View$PerformClick.run(View.java:18383)
04-10 13:28:57.920: E/WindowManager(1853):  at android.os.Handler.handleCallback(Handler.java:733)
04-10 13:28:57.920: E/WindowManager(1853):  at android.os.Handler.dispatchMessage(Handler.java:95)
04-10 13:28:57.920: E/WindowManager(1853):  at android.os.Looper.loop(Looper.java:137)
04-10 13:28:57.920: E/WindowManager(1853):  at android.app.ActivityThread.main(ActivityThread.java:4998)
04-10 13:28:57.920: E/WindowManager(1853):  at java.lang.reflect.Method.invokeNative(Native Method)
04-10 13:28:57.920: E/WindowManager(1853):  at java.lang.reflect.Method.invoke(Method.java:515)
04-10 13:28:57.920: E/WindowManager(1853):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
04-10 13:28:57.920: E/WindowManager(1853):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
04-10 13:28:57.920: E/WindowManager(1853):  at dalvik.system.NativeStart.main(Native Method)
04-10 13:28:57.980: I/Choreographer(1853): Skipped 62 frames!  The application may be doing too much work on its main thread.
04-10 13:29:00.400: I/Process(1853): Sending signal. PID: 1853 SIG: 9
Saumik Bhattacharya
  • 891
  • 1
  • 12
  • 28
  • 1
    Are you able to try and clean up your question somewhat? (It is good that you posted logs and output, but the formatting makes it rather hard to read and understand your problem.) – Lilith Daemon Apr 10 '16 at 19:21

1 Answers1

1

You are trying to start an activity from the background thread (in doInBackground method), that is the reason why your app is crashing. You should add that code in onPostExecute.

protected void onPostExecute(String args) {
    pDialog.dismiss();
    Intent i = new Intent(getApplicationContext(), RSSNewsReaderPBActivity.class);
    setResult(100, i);
    startActivity(i);
}
Midhun MP
  • 103,496
  • 31
  • 153
  • 200