問題タブ [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.

0 投票する
2 に答える
158 参照

android-lifecycle - アクティビティ API ライフサイクル メソッドが RuntimeException を使用してサブクラスにスーパー メソッドを強制的に呼び出すのはなぜですか?

Android では、すべての Activity サブクラスがライフサイクル メソッドからスーパー メソッドを呼び出す必要があります。スーパー メソッドが呼び出されない場合、例外がスローされます。Android が RuntimeException メカニズムを使用してスーパー メソッドの呼び出しを強制するのはなぜですか。スーパーメソッドが子メソッドの前に自動的に実行されるように、「テンプレート」デザインパターンを使用しないのはなぜですか。たとえば、 onDestroy() は次のように処理できます:-

0 投票する
3 に答える
313 参照

android - Android ライフサイクルの処理が多すぎるのはどれくらいですか?

この質問が少し主観的であることは理解できますが、具体的な答えがあると思います。

ListActivity でユーザーにデータを表示するだけの非常に小さなアクティビティがあります。私が使用するデータは、アプリの SQLite データベースから取得されます。

これはほとんど不要なコードですか?MainActivity が最上位にない場合に最小限のリソースを使用できるように、ライフサイクルを処理したいのですが、同時に、このアクティビティ全体を で実行できますonCreate()

0 投票する
2 に答える
1142 参照

android - Android - 横向きから縦向きへの二重のライフサイクル シーケンス

私はライフサイクルを監視して詳細を確認しているので、サイクルのほぼすべてのメソッドに呼び出しActivityを入れています。Log.d()

私は特にシーケンスを見ています:

アクティビティのライフサイクルを見る

Ctrl-F11 で 2.2 Froyo エミュレーターを縦向きから横向きに切り替える[A] から [B] までの1 つのラウンドが表示されます。

私にとって奇妙なのは、横向きから縦向きに切り替えると、[A] から [B] までの2 つのラウンドが見えることです。

これにより、アクティビティの状態を保存/復元する際に多くの問題が発生しています。

どうしてですか?なぜそうなのですか?

編集: 2.3.3 Gingerbread エミュレーターを使用すると、シーケンスは 1 回だけ実行されます。しかし、2.3.3 エミュレーターには、正常に回転しないという既知のバグがあります。

0 投票する
1 に答える
4174 参照

android - onDestroy() - インスタンス変数を null に設定するかしないか?

アクティビティの onDestroy() コールバックでインスタンス変数を明示的に null に設定するのは良い考えですか? このようなもの:

私がJava SEから正しく覚えていれば、分離されていて実行中のプログラムに接続されていない参照は、とにかくガベージコレクションすることができます。それで、これは上記を不必要にしますか?

一方、モバイル デバイスのライフサイクルは異なりますが、上記はベスト プラクティスでしょうか?

私はそれを行うのに害はないことを知っていますが、いくつかのクラス変数 (個々の UI 要素への参照など) がある場合があるため、実際に何が起こっているのか、自分の理解のために知りたいです。

前もって感謝します!

0 投票する
1 に答える
1895 参照

android - Androidで戻るボタンをクリックしたときのonSaveInstanceState

Androidアプリで実行時に呼び出されるアクティビティがあります。ユーザーが戻るボタンをクリックすると、アクティビティが破棄され、onSaveInstanceState保存outStateするメソッドを上書きして2回目に取得しますonSaveInstanceStateが、ユーザーが戻るボタンをクリックしても呼び出されることはありません。

なぜこれが起こるのか知っていますか?

0 投票する
1 に答える
352 参照

android - このアクティビティ-サービスメッセージングパターンはメモリリークを引き起こしますか?

私には労働者Serviceとたくさんの活動があります。すべてActivityにがありHandlerます。Activitesは、メソッドを使用してに送信Intentsすることにより、ジョブを開始できます。これらのジョブはキューに入り、順番に処理されます。ServicestartService

Handler完了したジョブの結果を報告するために、Messengerオブジェクトにラップされた適切なアクティビティIntentにジョブを説明するを提供します。は、これを介して呼び出しのServiceメッセージを送り返します。Activityこれは問題なく機能します。

しかし、提供されたものは、対応するものが破棄されHandlersた後でもメモリに残っているようで、完了メッセージを処理し続けます。Activites

  • どうすればいいの?ハンドラーは、それらが含まれている状態で破棄されるべきではありませんActivityか?
  • これによりメモリリークが発生しますか?
0 投票する
1 に答える
1156 参照

android - ロケーションのリッスンに IntentService を使用しますが、onDestroy は onHandleIntent の直後に呼び出されます

ユーザーがアクティビティを離れたときに実行されるように、IntentService を使用して GPS 位置情報の更新をリッスンしています。IS はメッセージで Location をアクティビティのハンドラーに送信します。

問題は、ユーザーが「トラッキングの停止」ボタンを押したときに、IntentService で作成されているため、「トラッキング中...」というステータス バーの通知がまだ残っていることです。したがって、 onDestory() をオーバーライドして、次のように呼び出すことができます。

しかし問題は、onDestroy() を実装すると、onHandleIntent の直後に呼び出されることです。オーバーライド onDestroy() コードを削除すると、すぐには呼び出されず、正常に実行され、場所がアクティビティに返されて画面に表示されます。

onDestroy() を実装するとすぐに呼び出されるのに、そうしないと呼び出されない理由はありますか?

私はここでかなり混乱しています。

皆さんありがとう、

インフィニティフィズ

0 投票する
8 に答える
14122 参照

android - 向きの変更時にアクティビティを再描画しないように Android を強制する

私はこれを理解するためにガガに行ってきました。
Orientation Change で多くのことを読んだことがありますが、Android はアクティビティを強制終了し、新しいアクティビティとして開始しonSaveInstanceState()ますonCreate()

しかし、私のアクティビティはさまざまな時間にさまざまな種類のネットワーク アクティビティを実行します。ネットワーク アクティビティが実行されているときに方向が変更された場合、さまざまな複雑なシナリオを処理する必要があります。

すべてのデータを自動的に保存して再利用するように、方向が変更されたときにこのアクティビティをまったく再描画する必要がないことを Android に指示する簡単な方法はありますか?

みたいなことってあるのかな。

0 投票する
1 に答える
9423 参照

android - Androidのライフサイクル-ActivityManagerがプロセスを強制終了します->バックグラウンドから戻るときに例外が発生します

私は非常に退屈な問題を抱えています。アプリがバックグラウンドに移行すると、LogCatが示すようにプロセスが強制終了されることがあります。

次に、タスクスイッチャー(ホームを長押し)を介してアプリに戻ろうとすると、最後に開いたアクティビティに戻ろうとします...そしてクラッシュします。

アプリ全体が閉じられたときにメインを開いて、最初から開かないのはなぜですか?

ERROR/InputDispatcherエラーが常に表示されるとは限りません。

アップデート:

問題は...アプリケーションは復元されますが、(ハッシュマップとして)ダウンロードされたオブジェクトは復元されません...そのため、それらにアクセスすると...「問題」が発生します...

更新2:

アプリケーションに必要なデータが含まれている場合、またはそれがnullである場合(この場合はアプリを再起動します)、BaseActivityでonCreate(他のすべてによって拡張される)を確認することで、問題を解決できました。

より洗練された解決策、または少なくともアプリケーションが強制終了された場合にアプリケーションを再起動したいことをデバイスに伝える方法はありますか?

このリンクは問題を理解するのに役立ちました...そしてアプリケーションからのデータを保存する方法について明確な答えがないことを知っています:Androidでグローバル変数を宣言する方法は?

更新3:

そこで、アプリケーションデータを正しく保存する方法について具体的に質問しました。これは、同じ質問を持つ人に役立つ可能性があります:Android:アプリケーションシングルトンクラスに保存されたデータを保存するための最良の方法

0 投票する
2 に答える
8180 参照

android - Android フラグメントと複合コントロール

複合コントロールの代わりに Android 3.0 フラグメントを使用する必要があるのはなぜですか? View 継承または複合コントロールを一度作成すれば、どこでも使用できます。

http://android-developers.blogspot.com/2011/02/android-30-fragments-api.htmlを読みましたが、答えが見つかりませんでした。