問題タブ [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 - プログラムの終了時にメソッドを呼び出す - onDestroy は信頼できない
戻るボタンを押してプログラムを終了したときに、いくつかの機能を実行したい。これは、1 つを除くすべてのケースで機能する onDestroy() によって実行されるようになりました。プログラムの終了時に別のアクティビティから戻る場合、onDestroy は呼び出されません。
理論的には、メモリ不足のために Android がアプリを閉じるときにのみ onDestroy を呼び出す必要があることはわかっていますが、私にとっては、onDestroy は常に機能し、非常に特殊な場合にのみ機能しません。
Using onPause or onStop does not work because I only want to call the function when the program is exited but not when just another activity is called.
So is the last way to catch the back-button-click and call the function there? Or is there any other solution?
android - Android アプリケーションのアクティビティ フローのベスト プラクティス
Android アプリケーションのライフサイクルのベスト プラクティスと、それにアクティビティがどのように適合するかを理解しようとしています。
たとえば、アプリケーションの「ホーム」のようなメイン アクティビティがあります。ただし、起動時に、アプリを初めて実行する場合など、いくつかのケースに応じて、実行する必要がある「可能性がある」アクティビティがいくつかあります。
これらの「スタートアップ」/ハウスキーピング アクティビティを「ホーム」アクティビティから呼び出すのがベスト プラクティスですか? それとも、アプリケーションは「ハウスキーピング」アクティビティから開始し、作業を行ってから、finish() して「ホーム」アクティビティを開始する必要がありますか?
これについてのアドバイスをありがとう、
-- J
android - AlertDialogの保持
特定の状況下でAlertDialogをポップアップするアクティビティがあります。
ただし、デバイスを回転させると、アクティビティが破棄されて再作成され、AlertDialogがなくなります。
人々はこれをどのように扱っていますか?
フラグをsavedInstanceStateに保存して、作成時にAlertDialogを再度スローするようにアクティビティに通知するのは簡単ですが、AlertDialogに大量のデータが必要であり、そのデータが動的である場合はどうでしょうか。それは本当に速く醜くなるでしょう。
特に私の場合:
アプリがWebサービスを呼び出したい場合、IntentServiceを起動し、必要なデータ(Webサービスに送信するための資格情報とデータ)を含むIntentを渡して起動します。ログインエラーが原因でIntentServiceによって処理されているインテントが失敗した場合、インテントは私のアクティビティに聞こえるメッセージをブロードキャストします。ActivityとListActivityを拡張し、BroadcastReceiverを追加しました。私のアプリのアクティビティはこれらから拡張されます。次に、ユーザーの資格情報を要求するAlertDialogをポップアップします。元のインテントのエクストラも渡されるため、ログインに成功すると、再処理できます。残念ながら、ユーザーが画面の向きを変更すると(たとえば、ハードウェアキーボードを引き出すなど)、AlertDialogは表示されなくなります。
android - 別のアクティビティを停止する簡単な方法がないのはなぜですか?
私はこれについて多くのトピックがあることを知っており、アクティビティのライフサイクルを理解しています(または少なくとも私はそう思います)。アクティビティ自体が、アクティビティを停止するプロセスを含め、そのライフサイクルを処理する必要があることを私は知っています。
ただし、場合によっては、これは実際的ではありません。たとえば、コントローラーがある場合、インターフェイスを管理し、I/O結果を受信する場合などです。
だから、のようなアクションでいくつかのインテントを送信しACTION_STOP_REQUEST
、アクティビティにそれを処理させるだけではいいのではないでしょうか?
android - onSaveInstanceState() で非 Parcelable オブジェクトの Hashtable を保存するとうまくいくことがあるのはなぜですか?
Android プログラミングの入門書を読んだ後、実際にはカバーされていないいくつかのトピックの理解を深めるために、サンプル アプリケーションを変更したいと考えました。変更を行う際にエラーが発生しましたが、エラーが機能する場合と機能しない場合がある理由が知りたいです。
アプリケーション内のアクティビティは、一連の質問を に格納しますHashtable<Integer, Question>
。ここで、Question は、int と 2 つの String を保持する小さなクラスです。最初に書かれたように、アクティビティはすべてのサーバーから質問をダウンロードするため、重複したダウンロードを防ぐため onCreate()
に実装したいと考えました。を使用してハッシュテーブルをバンドルに保存します。onSaveInstanceState()
onSaveInstanceState()
putSerializable()
Parcelable とは何か、またはその実装方法を知る前でさえ、画面の向きの変更に対して完全に機能しました。エミュレーターのホーム キーを押したときに問題が発生したことだけがわかりました。アプリは静かにクラッシュし、LogCat の出力はありませんでした。スタック トレースにより、Parcelable を検索し、Question に実装させました。
私の質問は、私が間違ったことではありません。問題は次のとおりです。Question クラスが Parcelable を実装していない場合、アプリがホームを押したときにのみクラッシュし、画面の向きが変わったときではないのはなぜですか?
android - onRestart() でアクティビティを再作成しても問題ありませんか
ListViews と TextViews を含む複雑な TabActivity があります。手動の UI 更新を台無しにする代わりに、フォアグラウンドになるたびにアクティビティを「再作成」する (強制的に完全に再描画する) ことにしました。アクティビティ A から B に移動するとします。B に戻った場合、アクティビティ A を再作成する必要があります。コードは次のとおりです。
それはうまくいきますが、何か間違ったことをしているのだろうか、もっとエレガントな解決策があるかもしれません。このシナリオのベスト プラクティスを教えてください。
android - エミュレーターでアクティビティの強制終了をシミュレートする
エミュレーターで自分のアプリをテストしたいと思いonSaveInstanceState
ます。onRestoreInstanceState
これを見つけました。これは、方向の変更中にこれをシミュレートできることを示していますが、変数の一部をアプリケーションレベル(サブクラスandroid.app.Application
)に格納しているため、方向の変更によって変数が消去されることはありません。
だから私の質問は、どうすればメモリ不足の状況をシミュレートして、私の活動を殺すことができるのかということです。
私が自分自身を明確にしたことを願っています。ありがとう
android - Android - ログイン画面に戻るときにメモリ内の既存のオブジェクトと変数をクリアする
ユーザーがダッシュボード画面にいて、電話の「戻る」ボタンを押すと、ログイン画面に戻り(まだ詳細が入力されています)、再度ログインすると、一部の変数がグローバルになるという問題があります。これらは効果的に再利用され、アプリケーションの機能に影響を与えます。
私の考えでは、このアクティビティが再開されたときに onResume メソッドをオーバーライドしてからすべてをクリアすることができましたが、これをコーディングしてフォームとアプリケーションのメモリにまだ存在する変数をクリアする方法がわかりません。
ありがとう。
android - Android onActivityForResult は、アプリを foregrnd と backgrnd の間で切り替えるとどのように反応しますか?
次のシナリオを検討してください。
==========================================
手順:
- 親アクティビティを起動します。
- 親のボタン b1 をクリックし、子を起動します
- 子供は無事に連れてこられ、画面に表示されます
- Androidデバイス(ハードウェア)のホームボタンを押します
- 子の onPause、onStop、および onDestroy が呼び出されます。
しかし、アプリがバックグラウンドに移動したときに、プログラム コントロールが親の onActivityResult に入ることはありません。
アプリがバックグラウンド ステータスの場合、この特定のプログラム コントロールはどこにありますか?
アプリを最前面に戻すと、アクティビティのライフ サイクルに関して予想される動作は何ですか?
前もって感謝します
誰でもこれについて説明できますか。
android - オブジェクトにアクティビティ ライフサイクル イベントをリッスンさせますか?
私が作成したクラスの 1 つは、次のActivity
イベントが発生したときに反応する必要があります。
- onStart()
- onPause()
- onResume()
- onStop()
アクティビティ自体でそれらに反応できます。
から、Activity
特定のイベントが発生したことを問題のオブジェクトに伝えることができましたが、この考えは好きではありませんobject/class
。理想的には、オブジェクトがこれらのイベントの登録を担当し、Activity
.
何か案は?前もって感謝します。