[Android] RuntimeException on AsyncTask : NullPointerException on doInBackground

Android アプリで、AsyncTask を実行中に RuntimeException が発生して、クラッシュするバグの解決方法をメモ。

"Thread: AsyncTask #5, Exception: java.lang.RuntimeException: An error occured while executing doInBackground()
	at android.os.AsyncTask$3.done(AsyncTask.java:278)
	at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
	at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
	at java.util.concurrent.FutureTask.run(FutureTask.java:137)
	at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
	at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.NullPointerException
	at com.example.myapp.d.c$a.doInBackground(SourceFile:1)
	at android.os.AsyncTask$2.call(AsyncTask.java:264)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
	... 5 more"

doInBackground メソッド内で、NullPointerException の例外が発生している箇所を try/catch ブロックで上手く囲んで、メソッドの最後で return null; を返すようにすればOKです。

また、このとき onPostExecute メソッド内で、引数に null が渡ってきたときに Async タスクが失敗したときの処理を行う必要があります。

[参考]

android – AsyncTask doInBackground returning a nullpointerexception only sometimes – Stack Overflow

Android : Getting RuntimeException on AsyncTask – Stack Overflow