• スポンサードリンク

Nexus6p(Android6.0.1)は電源ボタンを押した時のActivity/Fragmentの遷移がおかしい

Android

UsbWebCamera/UsbWebCameraPro/UVCStreamerの更新は順調に遅れておりますm(_ _)m でももう少しだからね。
主なところは、Android6のパーミッションに対応、GooglePlayの認証データの暗号化用に使っているPHONE STATEの読み込みを廃止します。あとUVCStreamerはバックグラウンド配信に対応します。

で遅れている原因の一端がこれ、Nexus6p(Android6.0.1)で電源ボタンを押した時のActivity/Fragmentの遷移が明らかに他の機種と違うのです。

テスト用にActivityが1つとLogCat出力用に各メソッドをオーバーライドしただけのFragmentが1つだけのプロジェクトを作って動かしてみました(Activity側はlog出力なし)。
まずは普通な奴。 Nexus7(2013, Android 5.1.1)

電源ボタンを押した時になぜかonResume → onPauseが余分に呼ばれてるけど、onResumeとonPauseがちゃんとペアになってるのでぜんぜん許容範囲でしょう。

次も普通な奴、Nexus5(Android6.0.1)

こっちはマシュマロなのでonAttach(context)が余分に呼ばれとりますが後はNexus7と一緒ですな。

で問題のNexus6p(Android6.0.1)

なんじゃこりゃぁ〜(●`ε´●)何故に〜
スクリーンOFFになってonStopが呼ばれるとこまでは他の機種と同じ。Fragmentが破棄されてonDestroyView, onDestroy, onDetachが呼ばれるのも許容範囲でしょう。
でも何でわざわざ破棄・再生成してから停止させるんだよぉ。しかも電源ONして画面が戻るときにまた破棄して再生成(´・ω・`) 意味わかりません。

ちなみにNexus6pでFragment生成時にsetRetainInstance(true)を呼んでFragmentの再生成を抑制するとこんな感じになります。

やっぱり破棄&再生成を無駄に繰り返しとる(●`ε´●)最初はマシュマロがおかしいんかと思ったらNexus5(Android6.0.1)は普通に遷移するのでNexus6pがおかしいって事に。他の機種はどうなんやろなぁ?
大した中身もないのに長い記事になってしまった^^;

テストのコードはこちら。Activityの親はandroid.app.Activityにしていますが、android.support.v7.app.AppCompatActivityとかにしても同じでした(´・ω・`)

« »

  • スポンサードリンク

%d人のブロガーが「いいね」をつけました。