4

私はAndroidの世界に比較的慣れておらず、画面の向きのサイクル全体がどのように機能するかを理解するのが難しいです。向きが縦向きから横向きに、またはその逆に変わると、アクティビティが破棄されてから再作成されることを理解しています。したがって、onCreate関数のすべてのコードが再度実行されます。これが私の状況です。Webサイトにログインし、データを取得してユーザーに表示するために作業しているアプリがあります。これはすべてバックグラウンドスレッドで実行されますが、これらのスレッドを開始するコードはonCreate関数にあります。ここで問題となるのは、ユーザーが画面の向きを変更するたびに、アプリがログインしてデータを取得し、ユーザーに再度表示することです。私がやりたいのは、アプリがログインしているかどうかをアプリに通知するブール値を設定して、onCreate関数が呼び出されたときにログインする必要があるかどうかをアプリが認識できるようにすることです。アプリがメモリ内にある限り、HttpClientが存在し、ユーザーのログインからのCookieが含まれますが、アプリがシステムによって強制終了されると、Cookieは削除されます。したがって、アプリが強制終了されたときにログインしたブール値をfalseに設定するようなことをする必要があると思いますが、画面が回転するとonDestroyが呼び出されるので、これはどのように可能ですか?また、finalize関数とisFinishing()も調べましたが、これらは機能していないようです。したがって、アプリが強制終了されたときにログインしたブール値をfalseに設定するようなことをする必要があると思いますが、画面が回転するとonDestroyが呼び出されるので、これはどのように可能ですか?また、finalize関数とisFinishing()も調べましたが、これらは機能していないようです。したがって、アプリが強制終了されたときにログインしたブール値をfalseに設定するようなことをする必要があると思いますが、画面が回転するとonDestroyが呼び出されるので、これはどのように可能ですか?また、finalize関数とisFinishing()も調べましたが、これらは機能していないようです。

短いバージョン:アプリがメモリから強制終了されたときと、アクティビティがローテーションされたときとイベントごとに異なるコードを区別するにはどうすればよいですか?

どんな助けや正しい方向へのポイントも大歓迎です。ありがとうございました!

4

2 に答える 2

9

マット、プラットフォームに、アクティビティが向きの変更を処理できることを伝えて、再起動する必要がないようにする必要があります。
これを行うには、のandroid:configChanges="keyboardHidden|orientation"アクティビティ宣言に追加しAndroidManifest.xmlます。詳細はこちら

于 2010-03-20T02:55:35.370 に答える
2

アレックスが指摘したように、方向の変更を行うときにアクティビティを再起動しないようにAndroidに指示できます...アプリケーションを再起動する必要がある場合(おそらく画面の向きがレンダリングコンテキストを変更するなど...)、onConfigurationChangedをオーバーライドすることで変更を通知できます(..) あなたのアクティビティで。

于 2010-03-20T10:43:52.350 に答える