Android Force закрывается на ProgressDialog - PullRequest
0 голосов
/ 22 января 2011

Я пытаюсь показать неопределенный ProgressDialog при получении RSS-канала. Я получаю диалоговое окно для всплывающих окон, но как только результаты возвращаются, я получаю силу близко. Я подозреваю, что адаптер заполнен и идет для обновления пользовательского интерфейса. Код ниже. Правильно ли мое подозрение?

        public void getRSS(String rss)
    {

        new GetRSS().execute(rss);

    }
    private class GetRSS extends AsyncTask<String, Void, Void>
    {
        private ProgressDialog Dialog = new ProgressDialog(View2.this);

        protected void onPreExecute() {

            Dialog.setMessage("Please wait...");
            Dialog.show();
        }

        protected void onPostExecute(Void nothing)
        {
            Dialog.dismiss();
        }

        protected Void doInBackground(String... rss) {
        URL feedUrl;
        try
            {
                feedUrl = new URL(rss[0]);

                SyndFeedInput input = new SyndFeedInput();
                SyndFeed feed = input.build(new XmlReader(feedUrl));
                List entries = feed.getEntries();

                Iterator iterator = entries.listIterator();
                while (iterator.hasNext())
                    {
                        SyndEntry ent = (SyndEntry) iterator.next();
                        String title = ent.getTitle();
                        //String uri = ent.getUri();
                        //d.add(uri);

                        SyndContent content = (SyndContent)ent.getContents().get(0);
                        d.add(content.getValue());
                        adapter.add(title);
                    }
                adapter.notifyDataSetChanged();
            }
        catch (MalformedURLException e)
            {
                e.printStackTrace();
            }
        catch (IllegalArgumentException e)
            {
                e.printStackTrace();
            }
        catch (FeedException e)
            {
                e.printStackTrace();
            }
        catch (IOException e)
            {
                e.printStackTrace();
            }
        return null;
        }
    }
    */

Вот дамп стека - ясно, что вызов для уведомления является проблемой. Теперь я просто не могу понять, куда звонить, уведомить:

01-22 12:02:28.701: ERROR/WindowManager(571): Activity com.digthisband.dtb.jg.View2 has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@43e6ae88 that was originally added here

01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): android.view.WindowLeaked: активность com.digthisband.dtb.jg.View2 утекло окно com.android.internal.policy.impl.PhoneWindow $ DecorView @ 43e6ae88, который был первоначально добавлен здесь 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на android.view.ViewRoot. (ViewRoot.java:247) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на android.view.WindowManagerImpl.addView (WindowManagerImpl.java:148) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): в android.view.WindowManagerImpl.addView (WindowManagerImpl.java:91) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на android.view.Window $ LocalWindowManager.addView (Window.java:424) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на android.app.Dialog.show (Dialog.java:241) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): в com.digthisband.dtb.jg.View2 $ GetRSS.onPreExecute (View2.java:97) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на android.os.AsyncTask.execute (AsyncTask.java:391) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на com.digthisband.dtb.jg.View2.getRSS (View2.java:87) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): в com.digthisband.dtb.jg.View2.onCreate (View2.java:68) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2627) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2679) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на android.app.ActivityThread.access $ 2300 (ActivityThread.java:125) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2033) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на android.os.Handler.dispatchMessage (Handler.java:99) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на android.os.Looper.loop (Looper.java:123) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на android.app.ActivityThread.main (ActivityThread.java:4627) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): в java.lang.reflect.Method.invokeNative (собственный метод) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на java.lang.reflect.Method.invoke (Method.java:521) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626) 01-22 12: 02: 28.701: ОШИБКА / WindowManager (571): в dalvik.system.NativeStart.main (собственный метод)

1 Ответ

0 голосов
/ 22 января 2011

Было бы лучше, если бы вы могли показать ошибку LogCat, она скажет, что вызвало исключение.Я также заметил, что вы вызываете notifyDataSetChanged () в методе doInBackground - вы должны вызывать это только в потоке пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...