2

私のAndroidアプリケーションでは、戻るキーを押すと、onPause()が自動的に実行された後、onDestroy()が呼び出されることに気付きました。

onPause()の後にアプリケーションがonDestroy()を呼び出さないようにするにはどうすればよいですか?

戻るキーを押した後、インスタンスを破棄したくありません。

Backキーを押すと、Webviewオブジェクトが破棄されます。そのため、戻るキーを押すと、Webビューに再度アクセスできなくなります。

2つのURLがあります。それらをURL1とURL2として想像してください。

WebビューでURL1を起動し、戻るキーを押すと、フローはonKeyDown()-> onPause()になります。

WebビューでURL2を起動し、戻るキーを押すと、フローはonKeyDown()-> onPause()-> onDestroy()になります。

なぜ動作に違いがあるのですか?クッキーと関係がありますか?

URL1の場合--cookies.isSecure=true;

URL2の場合--cookies.isSecure=false;

4

7 に答える 7

3

これがAndroidでのアクティビティライフサイクルの設計方法であり、干渉しないようにする必要があります。アプリは、必要かどうかに関係なく、いつでも実行時に破棄できます:)したがって、より良いアプローチは、アプリケーションのロジックにライフサイクルを適応させることです。

于 2011-12-19T04:58:37.853 に答える
3

マニフェストでの活動の宣言を確認してください。最小化したときにデータを保存できるように宣言します。

アクティビティには、コンテンツを復元する機能が必要です。

于 2011-12-20T12:07:10.323 に答える
2

アクティビティを上書きすることはできますonBackPressed()が、それが最後の手段になるはずです。

始める前にこれらのリンクのコツをつかんでください

アクティビティのライフサイクル

開発者ブログ

于 2011-12-19T06:44:47.720 に答える
2

これを回避するには、finish()をオーバーライドできます。

@Override
public void finish() {
    //super.finish(); // do not call super
    moveTaskToBack(true); // move back
}
于 2013-08-05T12:43:04.997 に答える
0

通常のAndroidアプリケーションの動作では、ホームボタンでアプリがバックグラウンドで非表示になり(ホーム画面が表示されます)、戻るボタンでアプリケーションが終了します(onPause、onStop、onDestroyの順に実行されます)。

戻るボタンが押されたときにアプリケーションのインスタンス/状態を保持したい場合は、onPauseで保存することをお勧めします-SharedPreferencesまたはsqliteデータベースの場所に状態を保存します。ただし、アプリケーションはonPauseが完全に実行されるまで待機してから終了するため、保存プロセスはできるだけ速くする必要があることに注意してください。

次に、インスタンス/状態をonResumeにロードします。

于 2011-12-19T06:53:34.943 に答える
0

使用onDestroy()後に呼び出されることがわかるので、一部のコードを回避できます。onPause()isFinishing()

于 2013-06-15T17:00:13.030 に答える
-1

ここでの答えは、マニフェストが破壊されないようにマニフェストを構成する必要があることを示していますが、構成方法については答えていません。同様の問題が発生したときにこの投稿にたどり着きました。解決策は非常に簡単です。ただ言及する

android:persistent="true"

参照: -https: //developer.android.com/guide/topics/manifest/application-element.html

これにより、戻るボタンをクリックしたときにアクティビティが破棄されるのを防ぐことができます

別の投稿でユースケースを使って詳しく説明しましたが、

活動が破壊されるのを可能な限り防ぐ

これが同じ問題のためにこの場所に到着する他の人に役立つことを願っています

于 2016-03-04T06:55:03.397 に答える