/ /画面がロックされると現在のアクティビティが消える-android、android-manifest、android-activity、android-lifecycle

画面がロックされると現在のアクティビティが消える - アンドロイド、アンドロイド - マニフェスト、アンドロイド - アクティビティ、アンドロイド - ライフサイクル

これが私の活動です。

<activity
android:name=".MainActivity_Hard"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/title_activity_main_activity__hard"
android:noHistory="true"
android:screenOrientation="portrait" >
</activity>

画面をアクティビティスタックに追加したくないので、android:noHistory = "true"とマークしました。

しかし、画面をロックしてロックを解除すると、アクティビティが消え、前の画面が表示されます。これは起こらないはずです。理由を誰かに教えてもらえますか?

注:これはICS(Samsung Galaxy Note)で発生しますが、以前のデバイス(Gingerbreadなど)では発生しません。

回答:

回答№1の場合は3

アクティビティにnoHistory属性を設定するつまり、ユーザーがそのアクティビティから離れると(含まれているロック画面を表示します)、そのfinish()関数が自動的に呼び出され、それが破棄されて、それを生成した前のアクティビティに戻ります。

これは通常、たとえば、ランチャーとしてのみ機能し、ユーザーが子からスプラッシュスクリーンに戻ることができないようにするスプラッシュスクリーンタイプのアクティビティに使用されます。

これがあなたの意図でない場合は、noHistory属性を削除し、アクティビティのライフサイクルを自分で管理することを検討してください。 (たとえば、アクティビティをスタックに入れたくない場合は、別のアクティビティが開始された直後に、単にfinish()を呼び出します。)

android:noHistory

アクティビティを削除する必要があるかどうかから アクティビティスタックが終了すると(そのfinish()メソッドが呼び出され)、 ユーザーがそこから移動すると、画面に表示されなくなります— 終了する必要がある場合は「true」、終了しない場合は「false」。デフォルト値 「false」です。 「true」の値は、アクティビティが終了しないことを意味します 歴史的なトレース。のアクティビティスタックには残りません。 タスク、したがって、ユーザーはそれに戻ることができなくなります。


回答№2の場合は0

理由はわかりません。 ただし、このアクティビティを現​​在のスタックに追加したくない場合は、android:launchMode = "singleTask"を設定できます。このアクティビティを開始すると、独自のスタックに追加されます。 もっと見ることができます ここにリンクの説明を入力してください それが役立つことを願っています:)


回答№3の場合は0

AndroidManifest.xmlで、この許可タグをアプリケーションタグの上に置きます。

<uses-permission android:name="android.permission.WAKE_LOCK" />