2

これは、私の活動の 1 つの小さなコードです。

Window window = this.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);

WAKE_LOCK を使用する権限を許可するようにマニフェストを既に設定しています。さて、よくわからないのは、1 つのアクティビティで設定されたフラグです。

スクリーン セーバー フラグのように、多くのアクティビティの 1 つがウィンドウにフラグを「追加」した場合、それらはアプリ全体で持続しますか?

私の推測では、アクティビティがフラグを設定または追加する場合、フラグが設定されたアクティビティがアクティブな場合にのみフラグがアクティブになります。別のアクティビティ (フラグを指定していない) を開始するために Intent を呼び出すと、フラグの設定された意図されたアクティビティが終了するまでフラグの設定がキャンセルされ、フラグの設定されたアクティビティの元の設定状態に戻る場合があります。

私が間違っている?前もって感謝します。

4

2 に答える 2

5

実験で最もよく解決される興味深い質問:

ボタンをクリックするだけでもう一方を開くという2つのアクティビティを備えた小さなアプリを作成してテストしました。画面のタイムアウトを15秒に設定しました。

onCreate()Activity1には、メソッドに画面をオンに保つためのコマンドが含まれていますが、Activity2には含まれていません。これで、Activity1が表示されている間、画面はオフになりません(明らかに)。Activity2を開いてから15秒後に、それが行われます。つまり、フラグはアクティビティが表示されている間のみ有効です。

finish()興味深いことに、Activity1を呼び出すかどうかは関係ありません。Activity1が破棄されonDestroy()ていない(呼び出されていない、のみonPause())場合でも、フラグは無効になります。

最初のアクティビティに戻った場合、onCreate()実際にはActivity1で再度呼び出されることはありませんが、フラグは再び有効になります(アクティビティは以前の機能でスタックから再開されるため)。

于 2012-09-04T09:01:10.493 に答える
5

Window、アクティビティの開始時に常にリセットされます ( onCreate)。一部のグローバル アプリケーション ウィンドウの状態にはフラグを追加しません。

Windowfor をActivity個別に設定する必要があります。

Intent を呼び出して別のアクティビティを開始する場合..

..呼び出しActivityが破棄され、新しいActivityものが作成されます。新しいものにはリセットウィンドウがあり、最初Activityに戻るとウィンドウが再びリセットされます。ただし、再度onCreateセットアップできる場所に呼び出される必要があります。Window

于 2012-09-04T08:46:40.777 に答える