2

カーソル ウィンドウをバインダーから作成できないことを確認しました。

電話帳から連絡先を取得しているときにメモリの問題が発生しています。以下は私のコードで、OS 4+でテストしています

Cursor cursor =managedQuery(ContactsContract.Contacts.CONTENT_URI,
    new String[]{Data._ID,"display_name","photo_id","starred"},
    null, null, "UPPER(" + ContactsContract.Contacts.DISPLAY_NAME + ") ASC , "
    + ContactsContract.Contacts.HAS_PHONE_NUMBER+ " DESC" );
Cursor pCur;
Cursor emailCur;
while(cursor.moveToNext()) {
    pCur = WP7Main.this.managedQuery(
        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
        projPhone, ContactsContract.CommonDataKinds.Phone.CONTACT_ID
        + " = ?", new String[] { id }, null);
}

そして、私はこれをasyncTaskで行っています。そのほぼ700以上の連絡先

エラーを下回っています

E/CursorWindow(25078): Could not create CursorWindow from Parcel due to error -12.
W/dalvikvm(25078): threadid=14: thread exiting with uncaught exception (group=0x40c66930)
E/AndroidRuntime(25078): FATAL EXCEPTION: AsyncTask #3
E/AndroidRuntime(25078): java.lang.RuntimeException: An error occured while executing doInBackground()
E/AndroidRuntime(25078):    at android.os.AsyncTask$3.done(AsyncTask.java:299)*

どうすればこれを解決できますか?

4

1 に答える 1

0

managedQuery は API 11 以降非推奨です。CursorLoader を使用する必要があります。表示されている例外は、非同期バックグラウンド スレッドから (アクティビティ スレッドにある) managedQuery メソッドを実行しようとしているためだと思います。このような大規模なリクエストを独自のスレッドで実行したい場合は、別の方法を使用する必要があることに同意します。

于 2013-09-26T03:47:39.580 に答える