Androidアラーム画面のプロパティ


先日、自分の前に実現した目覚ましアプリを振り返ってみましたが、その中の注意喚起画面(つまり、時間が経った目覚まし画面)には、以前は気づかなかった詳細がたくさんあります.
アラーム画面のxmlコードは以下の通りです.
        <activity
            android:name=".AlarmActivity"
            android:configChanges="orientation|keyboardHidden|keyboard|navigation"
            android:excludeFromRecents="true"
            android:label="@string/app_name"
            android:launchMode="singleInstance"
            android:theme="@android:style/Theme.Wallpaper.NoTitleBar" >
        </activity>
キー属性について以下の説明を行います.
config Changes
一般的には、Activityインターフェースが横画面に切り替わると、Activity全体が再ローディングされ、変化に適応するためにActivityを再起動します.しかし、私達の目覚まし時計のインターフェイスにとって、私達はもちろんユーザーが横方向のスクリーンを切る時、全体のインターフェイスは再びロードされたことを望みません.したがって、私たちはconfigChanges属性でこれらの変更イベントを表しています.configChanges上に表示されているイベントが発生したときにActivityを再読み込みすることなく、onConfigrationChangedというコールバック方法で処理します.
値の注意点は、オンラインではAndroid 3.2(API 13)からActivityを設定したAndroidのandroid:configChanges=「orentation keyboardHdden」以降も、それぞれのライフサイクルを再起動すると説明されています.screen sizeも設備の縦横切り替えによって変わり始めたからです.したがって、Android Manifest.xmlに設定されているMiniSdk VersionとTarget Sdk Versionの属性が13以上の場合、もしプログラムを停止したいなら、動作時にActivityを再読み込みし、「orentation」を設定する以外に、「ScreeenSize」を設定しなければなりません.
exclude Froom Recents
このプロパティはtrueに設定されているので、このActivityの実行は一番近い運転のリストには適用されません.この属性を設定する理由は簡単です.もしユーザが昔に目覚まし時計をセットしたら、突然鳴りました.私達はユーザーが先ほど私達のアプリケーションを使ったとは思えないでしょう.
launchMode
これは属性がActivityの起動モードを制御する属性で、4つの属性があります.ここで私たちが選んだスタートパターンはsingle Instanceで、このActivityを独立したタスクスタックに割り当てます.なぜこのようにしますか?私も偶然にこのような光景を発見しました.もしユーザが目覚まし時計をセットした後、アプリケーションを閉じていないなら、デスクトップに戻って他のアプリケーションに移りました.目覚まし時計のアプリケーションが回収されない前にアラームが鳴り、アラーム画面が起動した場合、アラーム画面を閉じて問題が発生する可能性があります.アラーム画面の起動モードがsingle Instanceでない場合、アラーム画面を閉じた後に残したアラーム画面は、ユーザがアラームが鳴る前に見た画面ではなく、前に閉じていなかった設定目覚まし時計の画面かもしれません.
上のまとめからわかるように、小さな目覚ましの画面にも大きなこだわりがあります.応用の設計に対して、私達は多くの細部に関心を持って、最後にようやく1項の精緻な作品を創造することができます.