問題タブ [android-lifecycle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android-lifecycle - アクティビティ API ライフサイクル メソッドが RuntimeException を使用してサブクラスにスーパー メソッドを強制的に呼び出すのはなぜですか?
Android では、すべての Activity サブクラスがライフサイクル メソッドからスーパー メソッドを呼び出す必要があります。スーパー メソッドが呼び出されない場合、例外がスローされます。Android が RuntimeException メカニズムを使用してスーパー メソッドの呼び出しを強制するのはなぜですか。スーパーメソッドが子メソッドの前に自動的に実行されるように、「テンプレート」デザインパターンを使用しないのはなぜですか。たとえば、 onDestroy() は次のように処理できます:-
android - Android ライフサイクルの処理が多すぎるのはどれくらいですか?
この質問が少し主観的であることは理解できますが、具体的な答えがあると思います。
ListActivity でユーザーにデータを表示するだけの非常に小さなアクティビティがあります。私が使用するデータは、アプリの SQLite データベースから取得されます。
これはほとんど不要なコードですか?MainActivity が最上位にない場合に最小限のリソースを使用できるように、ライフサイクルを処理したいのですが、同時に、このアクティビティ全体を で実行できますonCreate()
。
android - Android - 横向きから縦向きへの二重のライフサイクル シーケンス
私はライフサイクルを監視して詳細を確認しているので、サイクルのほぼすべてのメソッドに呼び出しActivity
を入れています。Log.d()
私は特にシーケンスを見ています:
Ctrl-F11 で 2.2 Froyo エミュレーターを縦向きから横向きに切り替える[A] から [B] までの1 つのラウンドが表示されます。
私にとって奇妙なのは、横向きから縦向きに切り替えると、[A] から [B] までの2 つのラウンドが見えることです。
これにより、アクティビティの状態を保存/復元する際に多くの問題が発生しています。
どうしてですか?なぜそうなのですか?
編集: 2.3.3 Gingerbread エミュレーターを使用すると、シーケンスは 1 回だけ実行されます。しかし、2.3.3 エミュレーターには、正常に回転しないという既知のバグがあります。
android - onDestroy() - インスタンス変数を null に設定するかしないか?
アクティビティの onDestroy() コールバックでインスタンス変数を明示的に null に設定するのは良い考えですか? このようなもの:
私がJava SEから正しく覚えていれば、分離されていて実行中のプログラムに接続されていない参照は、とにかくガベージコレクションすることができます。それで、これは上記を不必要にしますか?
一方、モバイル デバイスのライフサイクルは異なりますが、上記はベスト プラクティスでしょうか?
私はそれを行うのに害はないことを知っていますが、いくつかのクラス変数 (個々の UI 要素への参照など) がある場合があるため、実際に何が起こっているのか、自分の理解のために知りたいです。
前もって感謝します!
android - Androidで戻るボタンをクリックしたときのonSaveInstanceState
Androidアプリで実行時に呼び出されるアクティビティがあります。ユーザーが戻るボタンをクリックすると、アクティビティが破棄され、onSaveInstanceState
保存outState
するメソッドを上書きして2回目に取得しますonSaveInstanceState
が、ユーザーが戻るボタンをクリックしても呼び出されることはありません。
なぜこれが起こるのか知っていますか?
android - このアクティビティ-サービスメッセージングパターンはメモリリークを引き起こしますか?
私には労働者Service
とたくさんの活動があります。すべてActivity
にがありHandler
ます。Activitesは、メソッドを使用してに送信Intents
することにより、ジョブを開始できます。これらのジョブはキューに入り、順番に処理されます。Service
startService
Handler
完了したジョブの結果を報告するために、Messengerオブジェクトにラップされた適切なアクティビティIntent
にジョブを説明するを提供します。は、これを介して呼び出しのService
メッセージを送り返します。Activity
これは問題なく機能します。
しかし、提供されたものは、対応するものが破棄されHandlers
た後でもメモリに残っているようで、完了メッセージを処理し続けます。Activites
- どうすればいいの?ハンドラーは、それらが含まれている状態で破棄されるべきではありません
Activity
か? - これによりメモリリークが発生しますか?
android - ロケーションのリッスンに IntentService を使用しますが、onDestroy は onHandleIntent の直後に呼び出されます
ユーザーがアクティビティを離れたときに実行されるように、IntentService を使用して GPS 位置情報の更新をリッスンしています。IS はメッセージで Location をアクティビティのハンドラーに送信します。
問題は、ユーザーが「トラッキングの停止」ボタンを押したときに、IntentService で作成されているため、「トラッキング中...」というステータス バーの通知がまだ残っていることです。したがって、 onDestory() をオーバーライドして、次のように呼び出すことができます。
しかし問題は、onDestroy() を実装すると、onHandleIntent の直後に呼び出されることです。オーバーライド onDestroy() コードを削除すると、すぐには呼び出されず、正常に実行され、場所がアクティビティに返されて画面に表示されます。
onDestroy() を実装するとすぐに呼び出されるのに、そうしないと呼び出されない理由はありますか?
私はここでかなり混乱しています。
皆さんありがとう、
インフィニティフィズ
android - 向きの変更時にアクティビティを再描画しないように Android を強制する
私はこれを理解するためにガガに行ってきました。
Orientation Change で多くのことを読んだことがありますが、Android はアクティビティを強制終了し、新しいアクティビティとして開始しonSaveInstanceState()
ますonCreate()
。
しかし、私のアクティビティはさまざまな時間にさまざまな種類のネットワーク アクティビティを実行します。ネットワーク アクティビティが実行されているときに方向が変更された場合、さまざまな複雑なシナリオを処理する必要があります。
すべてのデータを自動的に保存して再利用するように、方向が変更されたときにこのアクティビティをまったく再描画する必要がないことを Android に指示する簡単な方法はありますか?
みたいなことってあるのかな。
android - Androidのライフサイクル-ActivityManagerがプロセスを強制終了します->バックグラウンドから戻るときに例外が発生します
私は非常に退屈な問題を抱えています。アプリがバックグラウンドに移行すると、LogCatが示すようにプロセスが強制終了されることがあります。
次に、タスクスイッチャー(ホームを長押し)を介してアプリに戻ろうとすると、最後に開いたアクティビティに戻ろうとします...そしてクラッシュします。
アプリ全体が閉じられたときにメインを開いて、最初から開かないのはなぜですか?
ERROR/InputDispatcherエラーが常に表示されるとは限りません。
アップデート:
問題は...アプリケーションは復元されますが、(ハッシュマップとして)ダウンロードされたオブジェクトは復元されません...そのため、それらにアクセスすると...「問題」が発生します...
更新2:
アプリケーションに必要なデータが含まれている場合、またはそれがnullである場合(この場合はアプリを再起動します)、BaseActivityでonCreate(他のすべてによって拡張される)を確認することで、問題を解決できました。
より洗練された解決策、または少なくともアプリケーションが強制終了された場合にアプリケーションを再起動したいことをデバイスに伝える方法はありますか?
このリンクは問題を理解するのに役立ちました...そしてアプリケーションからのデータを保存する方法について明確な答えがないことを知っています:Androidでグローバル変数を宣言する方法は?
更新3:
そこで、アプリケーションデータを正しく保存する方法について具体的に質問しました。これは、同じ質問を持つ人に役立つ可能性があります:Android:アプリケーションシングルトンクラスに保存されたデータを保存するための最良の方法
android - Android フラグメントと複合コントロール
複合コントロールの代わりに Android 3.0 フラグメントを使用する必要があるのはなぜですか? View 継承または複合コントロールを一度作成すれば、どこでも使用できます。
http://android-developers.blogspot.com/2011/02/android-30-fragments-api.htmlを読みましたが、答えが見つかりませんでした。