danieloeh / AntennaPodSP

MIT License
19 stars 19 forks source link

App is loading forever when feed is invalid #9

Open repat opened 9 years ago

repat commented 9 years ago

I'm trying to build an app for this feed: http://www.ohrenbaer.de/podcast/podcast.feed.podcast.xml. There are some invalid entries -> search for <title/> for example.

AntennaPodSP just shows the splash screen. If I close it, it still says Downloading podcast data in the notification bar and never disappears unless I restart or kill the app.

As I have no influence on the validity of the feed, the only option is for the app to ignore entries that are invalid. It's quite hard to tell what is indeed invalid and what is just incomplete, but I would say things like <title/> should be considered invalid. You have probably seen some weird feeds over the years ;-)

The original AntennaPod has no problems at all.

repat commented 9 years ago

Maybe the problem isn't the feed after all, I get these messages from logcat

W/SQLiteConnectionPool(30718): The connection pool for database '/data/data/de.danoeh.antennapodsp.repat.ohrenbaer/databases/Antennapod.db' has been unable to grant a connection to thread 11261 (Thread-11261) with flags 0x1 for 30.001001 seconds.

Tried it on Nexus 7(Stock 5.0.2) and Moto G (SlimRom 9/4.4.4)

I used https://github.com/dmoulton/rsscleaner to clean the rss and it still doesn't work, so maybe it's something else.

update, this is the logcat output from the start:

I/ActivityManager(  466): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=de.danoeh.antennapodsp.repat.ohrenbaer/de.danoeh.antennapodsp.activity.InitActivity (has extras)} from uid 10029 on display 0
I/ActivityManager(  466): Start proc de.danoeh.antennapodsp.repat.ohrenbaer for activity de.danoeh.antennapodsp.repat.ohrenbaer/de.danoeh.antennapodsp.activity.InitActivity: pid=31493 uid=10199 gids={50199, 9997, 3003, 1028, 1015} abi=armeabi-v7a
D/OpenGLRenderer(31493): Render dirty regions requested: false
D/Atlas   (31493): Validating map...
D/libEGL  (31493): loaded /system/lib/egl/libEGL_tegra.so
D/libEGL  (31493): loaded /system/lib/egl/libGLESv1_CM_tegra.so
D/WifiService(  466): acquireWifiLockLocked: WifiLock{Downloader type=1 binder=android.os.BinderProxy@23a27887}
D/libEGL  (31493): loaded /system/lib/egl/libGLESv2_tegra.so
I/OpenGLRenderer(31493): Initialized EGL, version 1.4
D/OpenGLRenderer(31493): Enabling debug mode 0
I/ActivityManager(  466): Displayed de.danoeh.antennapodsp.repat.ohrenbaer/de.danoeh.antennapodsp.activity.InitActivity: +849ms
D/WifiService(  466): releaseWifiLockLocked: WifiLock{Downloader type=1 binder=android.os.BinderProxy@23a27887}
W/System.err(31493): java.util.concurrent.ExecutionException: java.lang.NullPointerException: Attempt to invoke virtual method 'long java.util.Date.getTime()' on a null object reference
W/System.err(31493):    at java.util.concurrent.FutureTask.report(FutureTask.java:93)
W/System.err(31493):    at java.util.concurrent.FutureTask.get(FutureTask.java:163)
W/System.err(31493):    at de.a(SourceFile:637)
W/System.err(31493):    at aC.a(SourceFile:98)
W/System.err(31493):    at aC.doInBackground(SourceFile:72)
W/System.err(31493):    at android.os.AsyncTask$2.call(AsyncTask.java:288)
W/System.err(31493):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err(31493):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err(31493):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err(31493):    at java.lang.Thread.run(Thread.java:818)
W/System.err(31493): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'long java.util.Date.getTime()' on a null object reference
W/System.err(31493):    at dC.a(SourceFile:522)
W/System.err(31493):    at dC.a(SourceFile:471)
W/System.err(31493):    at do.run(SourceFile:681)
W/System.err(31493):    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
W/System.err(31493):    ... 4 more
D/WifiService(  466): acquireWifiLockLocked: WifiLock{Downloader type=1 binder=android.os.BinderProxy@2080b54c}
D/WifiService(  466): releaseWifiLockLocked: WifiLock{Downloader type=1 binder=android.os.BinderProxy@2080b54c}
I/ActivityManager(  466): Start proc com.google.android.deskclock for broadcast com.google.android.deskclock/com.android.alarmclock.DigitalAppWidgetProvider: pid=31528 uid=10011 gids={50011, 9997, 1028} abi=armeabi-v7a
E/WifiStateMachine(  466): WifiStateMachine CMD_START_SCAN source -2 txSuccessRate=124.14 rxSuccessRate=154.77 targetRoamBSSID=c0:25:06:4d:4d:dc RSSI=-56
^C

So I looked for getTime() in the src folder:

repat@laptop:~/git/AntennaPodSP/src/de/danoeh$ grep -r "getTime" antennapodsp/
antennapodsp/storage/PodDBAdapter.java:        values.put(KEY_LASTUPDATE, feed.getLastUpdate().getTime());
antennapodsp/storage/PodDBAdapter.java:                    .getPlaybackCompletionDate().getTime());
antennapodsp/storage/PodDBAdapter.java:            values.put(KEY_PLAYBACK_COMPLETION_DATE, media.getPlaybackCompletionDate().getTime());
antennapodsp/storage/PodDBAdapter.java:        values.put(KEY_PUBDATE, item.getPubDate().getTime());
antennapodsp/storage/PodDBAdapter.java:        values.put(KEY_COMPLETION_DATE, status.getCompletionDate().getTime());
antennapodsp/AppPreferences.java:        long firstAlarm = cal.getTimeInMillis() - now.getTimeInMillis();
antennapodsp/feed/FeedMedia.java:        dest.writeLong((playbackCompletionDate != null) ? playbackCompletionDate.getTime() : 0);
antennapodsp/adapter/EpisodesListAdapter.java:        holder.pubDate.setText(DateUtils.formatDateTime(context, item.getPubDate().getTime(), DateUtils.FORMAT_SHOW_DATE));

And now it's too late at night. I might have a look at this tomorrow.