問題タブ [activity-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 - Android はすぐにアクティビティ (デバッグ フラグ) を破棄しますが、現実的ですか?
私のAndroidエミュレーターには、「アクティビティをすぐに破棄する」というフラグがあります。この状態では、私の MainActivity は常に ActivityStack にある必要があるため、私のアプリは私がやりたいことを実行しません。アプリの実行中に ActivityStack のアクティビティが破棄されるのは実際のシナリオですか?
android - Android アクティビティ ライフサイクルに関する質問: GlobalPreferences をいつコミットするか
アプリケーションのシングルトン オブジェクトに保存されているユーザー設定がたくさんあります。サンプルモデルは次のようになります -
これで、ユーザーがアプリケーションを使用するときに、一連のアクティビティが作成され、ライフ サイクルを経て、これらの変数を利用して終了します。(たとえば、onStart()
メソッドでは、アクティビティを提示する前にユーザーがログインしているかどうかを確認します)。
私の質問は、Android のドキュメントでは、メソッド内のコンテキスト関連のデータをバックアップするように勧められているようですonPause()
。しかしonPause()
、自分で新しいアクティビティを作成するたびに呼び出され、次のアクティビティのonStart()
メソッドでそれらを復元するためだけに、すべての GlobalVariables をバックアップするのは無駄に思えます。代わりに、アプリケーション全体がバックグラウンドに入ったかどうかを判断する方法はありますか? そうでない場合、実際にすべてのグローバルを保存するのはいつですか?
ありがとう、
テジャ。
android - 活動の副作用はもはや見えませんか?
テキスト読み上げでテキストのページを読み取る簡単なアプリを作成しました。原則としては機能しますが、エンドユーザーにとって意味のある方法でonPause()、onResume()などを実装する必要があります。
具体的にはonPause()について2つのオプションがあります。
- 左のポイントから正確に続行することを目的として、読み取りを一時停止します。
- アクティビティがまだ表示されているかのように、通常どおり続行します。
2番目のオプションは、視覚的な活動でない場合、なぜ視覚的な障害によって発話が中断されるので、より賢明に見えます。
ただし、onPause()を「何もしない」関数として実装するときに考慮しなければならない他のシステム全体の考慮事項(「副作用」)があるかどうかはわかりません。
アクティビティが表示されなくなったときにonPause()が呼び出される以外に、テキスト読み上げを停止するかどうかを決定するときに考慮すべき他のイベントまたは副作用はありますか?
android - 「アクティビティが開始されていないため、現在のタスクが前面に出されました」のコールバック?
アプリが既に実行されていて、コードを変更していない場合、LogCat は次の警告を表示することを理解しています。
ActivityManager: 警告: アクティビティが開始されていません。現在のタスクが最前面に移動されました
私が理解していないのは、onResume() や onRestart() のようなアクティビティ ライフサイクルが呼び出されない理由です。
再実行する前にアプリが表示されなかったのに、onResume() または onRestart() コールバックが呼び出されなかったのはなぜですか?
android - onResume()メソッドでアクティビティを安全に終了するにはどうすればよいですか?
私のアクティビティのonResume()は、それを開始したインテントからいくつかの「エクストラ」データを読み取り、それに応じてUIを更新します。
エラー処理を追加したいのですが、インテントのデータが欠落しているか破損している場合、アクティビティはトーストを表示して終了します。
onResume()メソッドでfinish()を呼び出すだけでいいですか?どちらもライフサイクルに関係しているので、思いがけないことが心配です。
他にもっと良い方法があれば、私もこれらに興味がありますが、上記は最も簡単なようです。
ありがとう!
android - Androidアクティビティライフサイクル:強制終了後にアプリを復元する-設計上の問題
atmアプリを「onSaveInstanceState」と「onRestoreInstanceState」で動作させようとしていますが、深く掘り下げるほど、より多くの問題が発生します。
したがって、たとえば、これら2つの関数を介して1つのアクティビティを復元することは、まったく役に立たないことに気づきました。なぜなら、戻るボタンを押して前のアクティビティに戻ると、これは「savedInstanceState」バンドルを取得せず、代わりに完全に再作成されるためです。
単一のアクティビティだけでなく、アプリケーション全体を復元する方法はありますか?それとも、これは単なる奇妙なデザインであり、1つのアクティビティを復元することさえ気にしないでください。
よろしく、クラゲ
編集:わかりました、愚かな私...
私のメインアクティビティが取得したバンドルはnullではなく、「onRestore...」のみでした。「onCreate」では確かにnullでしたが、これは常に当てはまりました。(たとえば、殺した後に別のアクティビティから戻ったかどうかは関係ありません)
だから今、私は別の方法で混乱しています:私は以前に別のアクティビティでこれをテストしました、そしてそこで、「onCreate」と「OnRestoreInstanceState」のsavedInstanceStateバンドルは同じです!これは単なるランダムなものですか、それとも主な活動の特別なものですか?(さまざまな起動モードも試しましたが、影響はありませんでした)。
android - onDestroy() または finish() は実際にアクティビティを強制終了しますか?
実際、私は Android のシンプルで基本的な概念について質問していることを知っています。finish()
しかし、私はこれらとonDestroy()
方法について少し混乱しています。これによりアクティビティが強制終了され、これらのアクティビティに関連付けられたリソースが解放されるかどうか。
アクティビティを 1 つだけ含む単純なアプリケーションを試してみました。アプリケーションが実行されると、アクティビティが開始されるようなコンセプトだと思いました。戻るボタンをクリックすると終了します。そして、メモリ使用量を知るために、各ライフサイクルメソッド内にいくつかのトーストメッセージを表示しました。そして、戻るボタンをクリックすると、、、およびが実行されonPause()
ましonStop()
たonDestroy()
。この活動は終わったと思いました。しかし、アプリケーションを再起動すると、前回よりも多くのメモリが必要になりました。これは、Eclipse からアプリを実行するか、ホーム画面からアプリケーションを再起動するたびに発生します。
なぜそれが起こっているのですか?アプリケーション/アクティビティを実際に破棄してメモリを解放するにはどうすればよいですか?
私は自分のコードを含めています。クラス内でトーストメッセージを1つだけ送信します。次に、メモリ使用量も増加しています。
アプリケーションを実行するたびに、割り当てられたサイズが次のように増加しています: 3302744、3442384、3474552
マニフェスト:
メモリが毎回増加するのはなぜですか?
android - 呼び出されることが保証されていないのに、なぜ onDestroy() を実装するのですか?
Android アクティビティ ライフサイクルによると、呼び出されることが保証されている唯一のコールバック (アクティビティが実行中の状態を離れた場合、通常は予想される) はonPause()
.
したがって、実際に呼び出される保証onStop()
はありonDestroy()
ませんが、実装するのが理にかなっているシナリオがあると想定する必要があります。
アクティビティが Stopped 状態を介して Running 状態に戻る可能性がある場合に実装する必要があることを理解してonStop()
います (直接戻るのではなく、なぜそうするのかは別の問題です)。
しかし、onDestroy()
すべてのクリーンアップ/状態保存を に配置できる場合の の必要性は、私onPause()
には不明です。
実装するのが理にかなっている実際のアプリの状況 (つまり、車の運転などとの類推ではない) を説明できますonDestroy()
か?
java - Android:キル後のTabHostアクティビティの動作がおかしい/OnSaveInstanceStateが呼び出されない
何か間違ったことをしているのかどうかはわかりませんが、同じようなバグに遭遇したばかりなので、別のバグである可能性もあります。これを確認したり、解決策を知ったりできるかどうか疑問に思いました。
さて、2つのアクティビティAとBを含むタブホストがあります。
Aは「最初の」タブです。だから私が次のことをすると:
- (Aが開いています)
- スイッチB
- アプリを閉じる
- プロセスを強制終了します
- アプリをもう一度開く
- (Bが表示されます)
その後、私はすべてが大丈夫です。ログを使用すると、「onRestoreInstanceState」がAとBの両方に対して呼び出されたことがわかります。
今、私は次のことをします:
- (Bが開いていますが、Aに切り替えていません)
- スイッチB
- アプリを閉じる
- プロセスを強制終了します
- アプリをもう一度開く
- (Bが表示されます)
次に、「onRestoreInstanceState」がBに対して呼び出されますが、Aに対しては呼び出されません。getは「onCreate」のnullバンドルです。
Aに切り替えてからBに戻すと、再び問題ありません。その後、上記の動作を繰り返すことができます。
これは少し紛らわしいように聞こえますが、誰かが以前にこれに遭遇したことがありますか?
よろしく、クラゲ
編集:
他のタブでもこれを繰り返しました(Aを開いたままにし、アクティビティを強制終了し、復元し、再度強制終了し、再度復元します)。次に、意図的にタブを切り替えるまで、Bの「onCreate」は呼び出されません。以前に復元されたかどうかに関係なく、常にSavedInstanceバンドルを取得します。だからすべてが大丈夫です。
Edit2:
例外として、回転の変更についても同じことが言えます。真剣にこれまで誰もこれに気づいていませんか?これは、2.2エミュレータと2.3電話の両方で機能します。
android - Androidアクティビティフラグの問題
ランチャーアクティビティフラグをsingleTopに設定しています。
通知バーからアクティビティを起動すると(レシーバーにFLAG_ACTIVITY_NEW_TASKがあります)、新しいアクティビティが作成され、前のアクティビティは使用されません。スタックにアクティビティを1つだけ持つために何ができるでしょうか?
編集:
受信機では、動作しているようです