Androidのdeprecatedメソッドの注意点
Androidは頻繁にバージョンが上がります。
メジャーなバージョンアップは年に1回程度なのですが、マイナーバージョンアップでも意外にAPIの変更がされます。
そして、バージョンアップの際には「deprecated」なメソッドなどが出てきます。
今回は、「deprecated」なメソッドで発生した問題を報告したいと思います。
– 報告内容 –
Android 1.6を基本にアプリを開発していたのですが、2.2環境で試すと1.6では動いていた機能が動かなくなりました。
原因は、使用していたメソッドが2.2では deprecated 指定になり、代わりのメソッドが追加されたための様です。
使用していたメソッドは戻り値がなかったのですが、該当のメソッドの機能は完全に無視されて動きませんでした。
– 結論 –
今までJava開発をしてきて、deprecated なメソッドでもこんなに急に使えなくなった事は記憶に無いのですが、Androidでは容赦無しにいきなり使えなくなる(機能しなくなる)ようです。
基本的に無料のOSだから、という事でやりたい放題な気はしますが、今後も頻繁にバージョンアップがされると思いますので、その際にはAPIドキュメントに以下の表記があるメソッドには注意した方が良いかも知れません。
コンパイルエラーにはなりませんし、呼び出しても無視して機能しないだけなのでわかりづらいですから(苦)
This method is deprecated.
– 対策 –
上記の様な問題が出た場合、Androidのバージョンによって使えたり使えなかったりと非常に困った状況になるかと思います。
少し面倒ではありますが、Android開発者の公式サイトにある、 Backward Compatibility for Applications を参考にReflectクラスを用意すれば複数バージョンでも互換性を持たせる様にする事は可能です。
2011/12/09追記
上記の様にDeprecatedなメソッドがいきなり機能しなくなる以外にも突然例外が発生するケースも事もありました。
詳しくは「Android 3.0で発生する互換性問題など (速報版)」を参照して下さい。