読者です 読者をやめる 読者になる 読者になる

干し石榴長文用

長文以外はTumblrへ徐々に移します。

Activity#managedQuery()しててタブレット端末で強制終了

タブレット端末というかAndroid3以上で強制終了する問題にぶち当たったのですが

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to resume activity {xx.xx.xxxxxxxxxx.xxxxxxx.xxxxxxxx/xx.xx.xxxxxxxxxx.xxxxxx.xxxxxx.Xxxx}: java.lang.IllegalStateException: trying to requery an already closed cursor  android.content.ContentResolver$CursorWrapperInner@40661dd0
     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2288)
     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2316)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1050)
     at android.os.Handler.dispatchMessage(Handler.java:99)
     at android.os.Looper.loop(Looper.java:132)
     at android.app.ActivityThread.main(ActivityThread.java:4123)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:491)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
     at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: trying to requery an already closed cursor  android.content.ContentResolver$CursorWrapperInner@40661dd0
     at android.app.Activity.performRestart(Activity.java:4438)
     at android.app.Activity.performResume(Activity.java:4460)
     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2278)
     ... 10 more

以下の記事のおかげで解決しました.
Android 3.0で発生する互換性問題など (速報版) | SkyArts.com公式ブログ

原因は、Context#managedQuery (Uri, String, String, String, String)メソッドが Deprecatedになった為の様です。
いきなり例外発生がするようになるとは酷い話ですが、これがAndroidです(笑)

Activity#managedQuery()の呼出しをContentResolver#query()に置き換えて解決しました.

それにしても非推奨になったからといって実行時例外出る状況はちょっと酷くないですか.いや公式ドキュメント読めという話ですねすみません.いやそれにしてもちょっと