私はいくつかの面白い振る舞いを見つけ、それを回避する理由や方法を知らない。 アクティビティはsingletaskアクティビティです。つまり、onNewIntent()はアクティビティがスタックの最上部にある間のアクティビティを意味します。電話の画面がにある間、これは正常にうまく動作します。ただし、画面がオフになると、電話が「起きて」、その時点でonNewIntent()が呼び出されるまで、新しいインテントは受信されません。アクティビティがスタックの最上部になく、電話機がスリープ状態にある場合、アクティビティが開始され、onCreate()メソッドが呼び出されます。活性はまたFLAG_ACTIVITY_NEW_TASKフラグで起動さ電話が起きるまで、onNewIntent()は起動しません。
<activity android:name=".MyActivity"
android:launchMode="singleTask"
android:alwaysRetainTaskState="true" >
:として
アクティビティ宣言しました。インテントは、ブロードキャストレシーバから起動されます。電話が眠っていると意図が放送されている場合の活動はこれらのフラグとの電話をウェイクアップ:それは、スタックの一番上にあるときに活動が電話するまで作成されていませんが
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
が起きています。今、私は困惑してどこから始めるべきかわからない。私のアクティビティもonSaveInstanceState()を使用しています。アクティビティはFragmentActivityであり、1つのフラグメントを含んでいます。
ご協力いただければ幸いです!
私はこれをやっていると思っていましたが、私が絶対にしなければ、ウェイクロックを避けたいと思っていました。アクティビティがスタックの最上部になく、電話がスリープ状態になったときにインテントが送信されると、アクティビティが開始され、ウェイクロックは必要ありません。私は、同じアクティビティのonNewIntent()が同じ振る舞いに従うと仮定しましたが、明らかにそうではありません。私は部分的なロックを試してみるつもりです。 – Patrick
これは奇妙で、合意して、私はそれが重要であるとは思わないでしょう。あなたが何を見つけるか教えてください。 –
部分的なロックで運がありません。アクティビティは呼び出されないので、スクリーンロックを取得できません。 – Patrick