AndroidのAsyncTaskに出てくる警告のお話
はじめに
KotlinでAsyncTaskを書いてるとこんな感じに警告が出ていた
Javaで書いてた時はこんなの出てきてなかったはず... ともかくこれだけ警告出されるとさすがに気にせずにはいられないので早速調べてみました
原因
エラーのところにマウスオーバーすると詳細が出てくる
どうやらstaticじゃないとメモリリークの恐れがあるよって言ってるみたいです
解決方法
AsyncTaskをstaticな内部クラスとして宣言するために 以下のように書き換えました
KotlinではJavaの様にstatic指定が出来ないので代わりにcompanion objectを使います
無事に警告が消えたのでこれで大丈夫だと思われる
最後に
ここ に原因と解決方法合わせて詳しく載っていました
今回はcompanion objectを使用しましたが、Kotlin的にはあまり推奨してないみたいです 出来るならば外部クラスとして宣言してあげるのがいいみたい
非同期処理は闇が深い...