java.lang.IllegalStateException: attempt to re-open an already-closed object

后端 未结 2 1704
攒了一身酷
攒了一身酷 2021-01-14 04:39

I\'m trying to figure out why occasionally I\'m getting the IllegalStateException. I can\'t find any good examples that show how to load a list using a thread to query a SQ

相关标签:
2条回答
  • 2021-01-14 05:00

    Sounds like you need to syncronize the block where you set your adapter in onPostExecute. The problem is since AsyncTask is running on a separate thread, the order in which the cursor is set and subsequently requested isn't guaranteed. Try this..

        @Override
        protected void onPostExecute(Cursor cursor) {
            super.onPostExecute(cursor);
    
            synchronized(anyObject) {
            if (cursor != null) {
                try {
                    adapter = new MyCursorAdapter(ctx, cursor);
                } catch (Exception e) {
                }
                setListAdapter(adapter);
            } 
            }
        }
    
    0 讨论(0)
  • 2021-01-14 05:04

    Look into AsyncQueryHandler if you want to query DB the way you want.

    Your task RetrieveCursorTask is running on separate thread so when your activity gets destroyed your AsyncTask might still be running in background but as you have closed your cursor in main activity onDestroy it might be requeried again after your AsyncTask returns.

    0 讨论(0)
提交回复
热议问题