右向き矢印のメモ帳

技術系の備忘録とか

AndroidのAsyncTaskに出てくる警告のお話

はじめに

KotlinでAsyncTaskを書いてるとこんな感じに警告が出ていた

f:id:arrow52:20180505133945p:plain

Javaで書いてた時はこんなの出てきてなかったはず... ともかくこれだけ警告出されるとさすがに気にせずにはいられないので早速調べてみました


原因

エラーのところにマウスオーバーすると詳細が出てくる

どうやらstaticじゃないとメモリリークの恐れがあるよって言ってるみたいです


解決方法

AsyncTaskをstaticな内部クラスとして宣言するために 以下のように書き換えました

f:id:arrow52:20180505134326p:plain

KotlinではJavaの様にstatic指定が出来ないので代わりにcompanion objectを使います

無事に警告が消えたのでこれで大丈夫だと思われる


最後に

ここ に原因と解決方法合わせて詳しく載っていました

今回はcompanion objectを使用しましたが、Kotlin的にはあまり推奨してないみたいです 出来るならば外部クラスとして宣言してあげるのがいいみたい

非同期処理は闇が深い...