Android Oの気になる変更点
今回はAndroid Oによる変更点の中でも、特に気になったものをいくつか紹介したいと思います
バックグランド実行制御
電池を消耗しないように位置情報を受信する頻度が減少するようになります
これは、ナビゲーションアプリとかに影響が出そうですね
フォアグランドサービスを、起動するメソッドにも変更があります
NotificationManager.startServiceInForeground() メソッドが追加され、従来の方法(バックグランドサービスを作成してから、フォアグランドサービスへプロモート)は機能しなくなります
それを防ぐためにAndroid Oを対象としたアプリでは、アプリがバックグランドサービスを作成できなくなると、エラーとなるためです
バックグランドサービスを作成する機会があるアプリは注意が必要です
また、多くのバックグランドサービスは、JobSchedulerジョブに置き換えられるので、Android Oに移行する場合には、そちらで定期的に処理をすることが望まれます
パーミッション
パーミッションに関しては、Android6.0でも変更がありました
ちなみに、Android6.0での変更は、アプリインストール時にマニフェストに登録されているパーミッションすべてに許可を与えるのではなく、アプリ内で使用時のタイミングに、パーミッションの許可をユーザーに仰いで許可をするというものでした
Android6.0以降でユーザにパーミッション確認で許可をすると、マニフェストに登録されているもの、かつ同一のパーミッショングループに属しているパーミッションは、そのすべてが許可されていました
今回の変更は、確認を行ったパーミッションのみ許可されるようになりました
マニフェストに登録しており、同一グループに属するパーミッションは、許可を仰ぐタイミングでユーザの確認なしに許可が得られるようになります
例えば、位置情報を取得したい時には、マニフェストに[ACCESS_FINE_LOCATION]と[ACCESS_COARSE_LOCATION]を登録するかと思います
Android6.0以降の場合、[ACCESS_FINE_LOCATION]の許可を得た時点で、[ACCESS_COARSE_LOCATION]の許可も得ていることになります
Android Oの場合、[ACCESS_FINE_LOCATION]の許可を得た時点では、[ACCESS_FINE_LOCATION]の許可のみです
次に[ACCESS_COARSE_LOCATION]の許可を確認する時に、ユーザの確認なしに許可を得られます
終わりに
開発者としては、小さな変更でもアプリに異常をもたらす場合も大いにあるため、度々確認することが重要かと思います
火曜日担当:poppy
admin at 2017年05月30日 10:00:43