古いOSで動いていたアプリケーションが新しいOSで動かなくなる理由を調べてみました。
最近になってAndroidリファレンスを見たら、過去によく使われたメソッドや定数がdeprecated(非推奨)にされていました。
たとえばServiceクラスのonStartは現在deprecatedにされ、API Level 5(Android2.0)以降に実装されたonStartCommandが追加されています。
1.6以前
|
2.0以降
|
|
onStart |
動作する
|
非推奨
|
onStartCommand |
実装されてない
|
動作する
|
ところがAndroid2.2ではonStartメソッドが呼ばれないことがあるのです。
この挙動の違いが古いOSで動いていたアプリケーションが新しいOSで動かなくなる理由の一つです。
Serviceクラスの他、Intent・Context・Activity・SQLiteDatabase・MotionEventのように頻繁に使うクラスもdeprecatedが散見されます。
deprecatedのメソッドや定数を使ったアプリはOSのバージョンごとに動作が異なる可能性があります。
市販の書籍を参考にしている開発者は要注意です。書籍で紹介されている方法がdeprecatedの可能性があります。
VisualBasic5.0で作られたフリーウェアがWindows7で動いてる姿を見るとOSは互換性を維持することが当たり前に思えるのですが、Androidは違います。
度の端末でも動作するアプリケーションを作るには、アプリをメンテナンスし続ける必要がありそうです。
次回は1.6と2.xに両対応のアプリケーションのサンプルを公開する予定です。→公開しました
以上、参考になれば幸いです。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。