Наблюдатель не зарегистрирован. Иногда происходит сбой адаптера ListView

У меня есть служба, которая загружает некоторые данные альбома фотографий, и есть Activity. Служба имеет ссылку на действие и вызывает метод действия, уведомляющего пользовательский интерфейс для отображения последних данных списка, находящихся в очереди. Служба вызывает метод активности, который имеет обработчик для обновления пользовательского интерфейса, например

public void askForChecheList ( ) {
    galleryHandler.sendEmptyMessage ( 5 ) ;
}

Где обработчик похож

private Handler galleryHandler = new Handler() {
    @ Override
    public void handleMessage (Message msg) {
        // ...
        if ( msg.what == 5 ) {
            showUpdatedList ( ) ;
        }
    }
};

Я обновляю элемент listView со следующим кодом:

private synchronized void showUpdatedList ( ) {

    try {

        checkForPhotoService ( ) ;
        if ( mPhotoSyncService != null ) {
            this.mAllAlbumsData = mPhotoSyncService.getSyncAlbumsList ( ) ;
        }
        if ( mAlbumQueuedListAdapter == null ) {
            mAlbumQueuedListAdapter = new AlbumQueueListAdapter ( mContext , mAllAlbumsData ) ;
            mQueuedListView.setAdapter ( mAlbumQueuedListAdapter ) ;
        } else {
            mAlbumQueuedListAdapter.setData ( mAllAlbumsData ) ;
            mAlbumQueuedListAdapter.notifyDataSetChanged ( );
        }
    } catch ( Exception e ) {
        e.printStackTrace ( ) ;
    }
}

Но не знаю, когда-нибудь это приведет к сбою приложения с этим журналом. У меня очень хороший опыт использования listView , Adapter, но я впервые получаю эту ошибку. Кто-нибудь сталкивался с этим?

01-19 23:21:01.139: W/System.err(13013): java.lang.IllegalStateException: Observer android.widget.AbsListView$AdapterDataSetObserver@413afb00 was not registered.
01-19 23:21:01.139: W/System.err(13013): at android.database.Observable.unregisterObserver(Observable.java:69)
01-19 23:21:01.139: W/System.err(13013): at android.widget.BaseAdapter.unregisterDataSetObserver(BaseAdapter.java:42)
01-19 23:21:01.139: W/System.err(13013): at android.widget.ListView.setAdapter(ListView.java:556)
01-19 23:21:01.139: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity.showUpdatedList(StatusActivity.java:326)
01-19 23:21:01.139: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity.getCachedList(StatusActivity.java:228)
01-19 23:21:01.139: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.PhotoSyncService.downloadAlbums(PhotoSyncService.java:540)
01-19 23:21:01.144: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.PhotoSyncService.onHandleIntent(PhotoSyncService.java:111)
01-19 23:21:01.144: W/System.err(13013): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
01-19 23:21:01.144: W/System.err(13013): at android.os.Handler.dispatchMessage(Handler.java:99)
01-19 23:21:01.144: W/System.err(13013): at android.os.Looper.loop(Looper.java:155)
01-19 23:21:01.144: W/System.err(13013): at android.os.HandlerThread.run(HandlerThread.java:60)
01-19 23:21:01.174: W/System.err(13013): java.lang.IllegalStateException: Observer android.widget.AbsListView$AdapterDataSetObserver@413afb00 was not registered.
01-19 23:21:01.174: W/System.err(13013): at android.database.Observable.unregisterObserver(Observable.java:69)
01-19 23:21:01.174: W/System.err(13013): at android.widget.BaseAdapter.unregisterDataSetObserver(BaseAdapter.java:42)
01-19 23:21:01.174: W/System.err(13013): at android.widget.ListView.setAdapter(ListView.java:556)
01-19 23:21:01.174: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity.showUpdatedList(StatusActivity.java:326)
01-19 23:21:01.174: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity.getCachedList(StatusActivity.java:228)
01-19 23:21:01.174: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity.showUpdatedValues(StatusActivity.java:275)
01-19 23:21:01.174: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity.access$4(StatusActivity.java:259)
01-19 23:21:01.174: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity$2.handleMessage(StatusActivity.java:93)
01-19 23:21:01.174: W/System.err(13013): at android.os.Handler.dispatchMessage(Handler.java:99)
01-19 23:21:01.174: W/System.err(13013): at android.os.Looper.loop(Looper.java:155)
01-19 23:21:01.174: W/System.err(13013): at android.app.ActivityThread.main(ActivityThread.java:5485)
01-19 23:21:01.174: W/System.err(13013): at java.lang.reflect.Method.invokeNative(Native Method)
01-19 23:21:01.174: W/System.err(13013): at java.lang.reflect.Method.invoke(Method.java:511)
01-19 23:21:01.174: W/System.err(13013): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
01-19 23:21:01.174: W/System.err(13013): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)
01-19 23:21:01.174: W/System.err(13013): at dalvik.system.NativeStart.main(Native Method)
01-19 23:21:01.174: W/System.err(13013): java.lang.IllegalStateException: Observer android.widget.AbsListView$AdapterDataSetObserver@413afb00 was not registered.
01-19 23:21:01.174: W/System.err(13013): at android.database.Observable.unregisterObserver(Observable.java:69)
01-19 23:21:01.174: W/System.err(13013): at android.widget.BaseAdapter.unregisterDataSetObserver(BaseAdapter.java:42)
01-19 23:21:01.174: W/System.err(13013): at android.widget.ListView.setAdapter(ListView.java:556)
01-19 23:21:01.174: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity.showUpdatedList(StatusActivity.java:326)
01-19 23:21:01.174: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity.getCachedList(StatusActivity.java:228)
01-19 23:21:01.174: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity.showUpdatedValues(StatusActivity.java:275)
01-19 23:21:01.174: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity.access$4(StatusActivity.java:259)
01-19 23:21:01.174: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity$2.handleMessage(StatusActivity.java:93)
01-19 23:21:01.174: W/System.err(13013): at android.os.Handler.dispatchMessage(Handler.java:99)
01-19 23:21:01.174: W/System.err(13013): at android.os.Looper.loop(Looper.java:155)
01-19 23:21:01.174: W/System.err(13013): at android.app.ActivityThread.main(ActivityThread.java:5485)
01-19 23:21:01.174: W/System.err(13013): at java.lang.reflect.Method.invokeNative(Native Method)
01-19 23:21:01.174: W/System.err(13013): at java.lang.reflect.Method.invoke(Method.java:511)
01-19 23:21:01.174: W/System.err(13013): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
01-19 23:21:01.174: W/System.err(13013): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)
01-19 23:21:01.174: W/System.err(13013): at dalvik.system.NativeStart.main(Native Method)
01-19 23:21:02.589: W/System.err(13013): java.lang.IllegalStateException: Observer android.widget.AbsListView$AdapterDataSetObserver@413afb00 was not registered.
01-19 23:21:02.609: W/System.err(13013): at android.database.Observable.unregisterObserver(Observable.java:69)
01-19 23:21:02.609: W/System.err(13013): at android.widget.BaseAdapter.unregisterDataSetObserver(BaseAdapter.java:42)
01-19 23:21:02.609: W/System.err(13013): at android.widget.ListView.setAdapter(ListView.java:556)
01-19 23:21:02.609: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity.showUpdatedList(StatusActivity.java:326)
01-19 23:21:02.619: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity.getCachedList(StatusActivity.java:228)
01-19 23:21:02.619: W/System.err(13013): at au.com.apparitionimaging.photosuitcase.activities.StatusActivity$2.handleMessage(StatusActivity.java:97)
01-19 23:21:02.619: W/System.err(13013): at android.os.Handler.dispatchMessage(Handler.java:99)
01-19 23:21:02.629: W/System.err(13013): at android.os.Looper.loop(Looper.java:155)
01-19 23:21:02.629: W/System.err(13013): at android.app.ActivityThread.main(ActivityThread.java:5485)
01-19 23:21:02.629: W/System.err(13013): at java.lang.reflect.Method.invokeNative(Native Method)
01-19 23:21:02.629: W/System.err(13013): at java.lang.reflect.Method.invoke(Method.java:511)
01-19 23:21:02.629: W/System.err(13013): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
01-19 23:21:02.629: W/System.err(13013): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)
01-19 23:21:02.629: W/System.err(13013): at dalvik.system.NativeStart.main(Native Method)

person Arslan Anwar    schedule 20.01.2013    source источник


Ответы (1)


Это не решение вашей проблемы с обработчиком, но я бы рекомендовал использовать шаблон observer-pattern, чтобы избежать проблем, с которыми вы сталкиваетесь, я нашел это сайт, который должен объяснить логику того, как это сделать правильно.

person Nickolaus    schedule 20.01.2013