IndexOutOfBoundsException when I call stopManagingCursor in an OnItemSelectedListener

by Jeffrey Yasskin » Sun, 08 Mar 2009 08:50:37 GMT


Sponsored Links
 Activity.performStop() contains the following loop (around line 3394
in the 1.0 SDK release and at
 http://android.git.kernel.org/?p=platform/frameworks/base.git ;a=blob;f=core/java/android/app/Activity.java;h=4dc4b6a48b85f9caad4234b8e29fafdc9260840c;hb=HEAD#l3504):

            final int N = mManagedCursors.size();
            for (int i=0; i<N; i++) {
                ManagedCursor mc = mManagedCursors.get(i);
                if (!mc.mReleased) {
                    mc.mCursor.deactivate();
                    mc.mReleased = true;
                }
            }

In my app, mc.mCursor.deactivate() calls (indirectly)
SimpleCursorAdapter.notifyDataSetInvalidated(), which calls
(indirectly) AdapterView.fireOnSelected(), which calls my
OnItemSelectedListener, which calls stopManagingCursor(), which
reduces the size of mManagedCursors, which makes the ArrayList.get()
call throw on the next iteration.

I'm calling stopManagingCursor to avoid the crash described at <http://
groups.google.com/group/android-developers/browse_thread/thread/
f6fabc180e8b517a/c04691d80f1e9135?lnk=gst&#c04691d80f1e9135> (and a
few other posts you can find by searching this group for
"SQLiteClosable").

I suspect this is a bug in Activity.performStop, which shouldn't
assume mManagedCursors is constant through a call to a user-provided
callback. Until the Android developers can fix the bug, I'm looking
for a workaround. Should I just abandon managed cursors, which don't
seem to work well with CursorAdapters? Is there a good way to prevent
my OnItemSelectedListener from being called during performStop()? Any
other ideas?

Thanks,
Jeffrey
--~--~---------~--~----~------------~-------~--~----~



IndexOutOfBoundsException when I call stopManagingCursor in an OnItemSelectedListener

by Jeffrey Yasskin » Sun, 08 Mar 2009 10:40:05 GMT


 That's a reasonable idea, thanks. Right now, I'm calling changeCursor
(null) for each of my adapters in onDestroy(), but if I run into
trouble with leaking cursors before I can set them into an adapter
I'll try removing the listeners.

Filed at  http://code.google.com/p/android/issues/detail?id=2174. 




--~--~---------~--~----~------------~-------~--~----~


Sponsored Links


Other Threads

1. info hot

PayBox.me adalah suatu jasa pembayaran baru serupa PayPal, AlertPay, Liberty
Reserve dan lainnya, yang dirancang untuk jadi sistem pembayaran terbaik
Internet dan mereka mencari para pengguna Early Bird
yang mau mengetes fitur-fitur yg akan mereka kembangkan.

PayBox.me sekarang belum resmi launching, rencananya paybox.me akan
launching pada akhir tahun 2011 dan akan benar-benar resmi digunakan tahun
2012.
Saat pre launching ini banyak sekali keuntungan yang di dapat, diantaranya
adalah :

1. Ketika daftar kita langsung mendapatkan free $ 25 di account kita.

2. PayBox akan menambah hingga $ 20 per hari untuk account kita yang
berpartisipasi dengan login maupun mengisi survey untuk kesiapan layanan
paybox yang optimal.

3. Kita akan mendapatkan $ 10 untuk setiap orang yang kita ajak bergabung ke
PayBox.
4. Kita akan menjadi EarlyBird pengguna-sebelum PayBox terbuka untuk umum.

5. Kita akan membantu membentuk pengembangan sistem pembayaran terbaik yang
pernah dirancang untuk Internet.

6. Kita bisa memiliki ratusan atau ribuan dolar dalam account paybox pada
saat kita memulai, tanpa pernah membuat deposit!

Saat Pre-Launching ini kita bisa mendapatkan bonus lebih diantaranya adalah
Hanya dengan baca blognya PayBox dan menyelesaikan Survey kita bisa
mendapatkan bonus.
Bonus ini kita dapat hanya selama kita join dalam masa pre-launch.

MAKANYA SEGERA DAFTAR DISINI.
http://www.paybox.me/r/ato857312
untuk menjaga agar akun kita tetap aktif dan terus mendapatkan bonus dari
PayBox.me yang kita harus lakukan adalah:

1. Sering Log in dan baca Blog PayBox.me. Jika tidak login lebih dari 2 hari
maka penghasilan anda akan berhenti, dan juga jika kita tidak login lebih
dari 1 bulan, maka akun Sunarto akan dihapus.

2. Tetap berlangganan Blog PayBox, Blog ini adalah saluran utama yang kita
gunakan untuk menjaga kita EarlyBird pengguna diperbarui dengan perkembangan
terbaru di PayBox. Jika tidak berlangganan blog, akun kita akan dianggap
tidak aktif dan bahkan dapat diakhiri.

3. Menyelesaikan Survei, demi kesempurnaan PayBox.me dengan masukan-masukan
dari Kita

SEGERA DAFTAR disini <http://www.paybox.me/r/ato857312>

-- 
===============
"

2. App availability in Germany

I am based in the US and I developed a couple of apps in the last
couple of weeks and I have them on Market.
I just talked to a friend of mine in Germany who just purchased an
Android device. He went to Market and didn't find any of my apps. One
of my apps is called "Morse Trainer". He search on Market for "Morse"
and he got 37 results. When I search for "Morse" I get 78 results.
I know Google did some updates on Market this morning but he had the
problem already 2 days ago.

Anyone has a idea why he can't see my apps ?

Thanks in advance

-- 

3. how to get beahviour of finish() when user clicks on back button in case of intent.action_dial

4. Force installation for only one signing key

5. Crash reports on Market

6. Webkit debugging using Anjuta instead of ddd/eclipse?

7. [WTA] inject smart di htc hero