問題タブ [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 - メインとして指定された新しく追加されたアクティビティが常に「メイン」アクティビティとして表示されるわけではありません
私の苦境を説明させてください。
私はしばらくの間アプリを構築しており、すぐに私のMainActivity.class
. このアクティビティをAndroidManifest.xml
ファイルで次のように宣言しました。
次に、アプリにログイン アクティビティを追加する必要があることに気付きましたNewMainActivity.class
。この新しいアクティビティをうまく実装できました。そして<intent-filter>
、古いMainActivity.class
ものを次のように変更しました。
しかし、ここで私の問題が発生します。
ログイン ページ ( NewMainActivity.class
) で戻るキーを押すonPause()
と、、、、onStop()
およびonDestroy()
メソッドが実行されます。アプリを再度起動すると、ログイン ページ ( NewMainActivity.class
) が表示されず、代わりに古いページMainActivity.class
が表示されます。
私がまだ欠けている/間違っていることを誰かが推測できますか? 常にログインページから開始する必要があるように思えます。コードサンプルが役立つかどうか教えてください。
android - ユーザーが設定を強制終了した後にアプリが起動しているかどうかを知ることはできますか?
おそらく私のアクティビティのonCreate()で、アプリが以前に通常のホーム/戻るボタンに従って閉じられたかどうか、またはユーザーが実際にAndroid設定に入り、強制終了を選択したかどうかを知りたいです。
これらの2つのケースを区別することは可能ですか?
編集:
私が何を意味するのか十分に説明できなかったのではないかと思います。アクティビティのライフサイクルドキュメントを読みましたが、それはかなりよく理解しています。
基本的には、アクティビティがいつ作成されたか、ユーザーが以前にAndroid設定に移動して、強制停止を押したかどうかを知りたいだけです。アプリが強制的に停止された場合は、アクションを実行します(具体的には、起動時にスプラッシュ画面を表示します)。
以下の回答の多くは、onStop()またはonDestroy()にフラグを設定でき、ユーザーが強制停止を押してもこれらのメソッドは呼び出されないことを示しています。問題は、次のシーケンスのために、これらのメソッドがそのポイントに到達する前にすでに呼び出されていることです。
- アプリはアクティブ状態であり、使用されています
- ユーザーが戻るボタン(onStop()、onDestroy()が呼び出される)、ホームボタン(onStop()が呼び出される)、または最近のアプリボタン(onStop()が呼び出される)を押す
- ユーザーがAndroid設定に入り、強制停止をタップします
その状況では、onStop()の共有設定にフラグを設定しますが、ユーザーが強制停止を押すと、フラグはonCreate()で引き続きアクティブになります。
ユーザーが設定で強制停止を押さない限り、スプラッシュ画面を表示したくありません。私はこれが行われるべき方法ではないことを知っています...しかし、この決定は私によってなされませんでした。
android - 活動のライフサイクル
アクティビティのライフサイクル全体を理解しようとしています。
そのため、Googleで検索して、アクティビティのライフサイクルに関するチュートリアルをたくさん見つけましたが、すべてのチュートリアルで、ライフサイクル図にこれらのメソッドが見つかりませんでした
:
1。2 OnContentChanged()
. OnPostCreate()
3. OnPostResume()
4. OnWindowfocusChanged()
5.6.7 OnuserLeaveHint()
。OnUserInteraction()
OnDetachedFromWindow()
これらのメソッドがAndroidドキュメントのアクティビティライフサイクル図に含まれていない理由を知りたいです。
もう1つの質問:
アクティビティが最初に作成されると、システムはOnContentChanged()
最初のメソッドとしてメソッドを呼び出し、システムによる最後の呼び出しはOnDetachedFromWindow()
アクティビティが強制終了されたときのメソッドですが、Androidドキュメントではアクティビティの存続期間全体がとの間OnCreate()
で発生すると述べていOnDestroy()
ますか?
java - アプリを「終了」した後でも、DDMSでアプリのプロセスと「対話」できるのはなぜですか。
今、Androidにはアプリを「終了」するようなものはないことを認識しています。これは、アプリ内のすべてのアクティビティが破棄された後でも、アプリに対応するプロセスがメモリに保持されることを意味します。(わかりやすくするために、サービスなどは含めないようにします)。プロセスは、システムがメモリを再利用するために強制終了することを決定した場合にのみ強制終了されます。
ただし、すべてのアクティビティが破棄されると、アプリに対応するプロセスは「アクティブ」ではなくなったと思います。これは、私のアプリが何の作業も行っていないため、プロセスが割り当てを実行しなくなったと想定していることを意味します。この仮定は正しいですか?
HelloWorld
Eclipse ADTがを介して提供する単純なデフォルトの例を使用しNew Android Project Wizard
ましたが、そうではないことがわかりました。アプリを閉じた後でも、DDMSで割り当てを追跡できます。誰かがこれの理由を説明できますか?
android - 計装:ライフサイクルの制御
Instrumentationを使用してTestCase内からAndroidアクティビティのライフサイクルを制御するにはどうすればよいですか?
公式ドキュメントには、「ライフサイクル制御:インストルメンテーションを使用すると、テストケースクラスによって提供されるメソッドを使用して、テスト対象のアクティビティを開始、一時停止、および破棄できます。」と記載されています。もちろん、このテストケースを使用すると、getActivity()を呼び出すときにAcitivityが自動的に作成され、各テストケースの後で停止されます。しかし、すべてのライフサイクルメソッドが正しく実装されているかどうかを確認するために、ライフサイクルを外部で制御するにはどうすればよいでしょうか。
ライフサイクルメソッドonActivityXXXは、それぞれのメソッドを呼び出すのに役立ちますが、アクティビティを一時停止または停止させることはありません。誰か助けて、私が使用しなければならない方法を教えてもらえますか?
Androidアプリケーションのライフサイクル実装をテストする方法はありますか?
android - スーパークラス メソッドの呼び出しを最初のステートメントにする必要がありますか?
この例onActivityResult(int requestCode, int resultCode, Intent data)
に示すように、音声認識の結果はメソッドで読み取ることができます。このメソッドは class の同じメソッドをオーバーライドします。スーパークラス メソッドの呼び出しが最初のステートメントではないのはなぜですか?Activity
android - Android コンストラクター
Android アプリをしばらくプログラミングした後 (1 つは市場にアップロードされ、4,7 の評価で 3,000 以上のアクティブなインストールがあります)、どうすれば自分のアプリをさらに素晴らしいものにすることができるか疑問に思い始めました。本当に新しい、世界を変える機能を追加することはできないことに気づき、パフォーマンス、ほぼすべてを最適化する方法、最適な CPU/メモリ使用率を見つける方法などを調べ始めました。
とにかく、画面を回転させる場合に onCreate が実行されることがわかりました。これは非常に論理的ですが、いくつかの(大きな)計算があり、回転するたびにやり直す必要はありません。これの 1 つは、4 つの列を持つ 6500 行の csv を反復処理することです。データを含む 2 列はオートコンプリート アダプターに使用され、別の 2 列は機能のオプションですが、初期化する必要があります。現在、これは onCreate の最後にトリガーされる asynctask で実行され、非常に優れた CPU を備えた HTC Desire S で約 3 秒かかります。確かに私は望んでいません... UIがクラッシュすることはありませんが、その秒が終わるまでオートコンプリートはありません。
SO:私の質問は、コンストラクター(標準のJavaのような)などの別のメソッドでこれを行うことができますか、それともアクティビティの特別なライフサイクルのため、それは悪い習慣ですか?つまり、「コンストラクター」が実行される方法でアクティビティをインスタンス化し、その直後に onCreate が実行されます。ローテーションの場合、私の「コンストラクター」は再び実行されませんが、onCreate は実行されます。安定性は私の一番の目標です。または、これを行う良い方法はありますか?これとまったく同じように作成されたもので、私が気づいていないものは何ですか? 私は本当にこの問題で多くのことを改善したいと思っています。できればこの経験のある人からの助けを本当に感謝していますが、どんな助けも大歓迎です! :)
たとえば、この方法で新しいアクティビティを作成したい場合は、次のようにします。
コンストラクターが実行され、次のように終了します。
このようにして、コンストラクターが実行され、変数が初期化され (ビューなどに接続されません)、その後、アクティビティは必要なときにいつでも onCreate 変数を実行できます。
構文が間違っている場合はご容赦ください。ファストタイプしただけです:)
android - バックキーは無限に同じアクティビティにループバックします
Androidアプリケーションをプログラミングしていますが、奇妙な問題があります。
私のアプリケーションには、起動イベントのフィルターを定義するLoginActivityがあります。ログインが完了するとすぐに、を使用して「ホーム」アクティビティを開始し、を使用startActivity(new Intent(LoginActivity.this, HomeActivity.class))
してLoginActivityを停止しfinish()
ます。
HomeActivityは、通知、オーバーライドonCreate
、およびを備えたシンプルなダッシュボードonStart
です。また、AsyncThreadを使用していくつかのコンテンツアイコンを更新します。
問題は次のとおりです。ホームボタンを押してアプリを終了し、[最近]メニュー(Android-ホームボタンを押したまま)を使用して再度開くと、アプリのバックキーが「壊れています」:押すHomeActivityを終了しませんが、代わりに同じアクティビティにループバックします。
意味...HomeActivity<-HomeActivity <-HomeActivity<-HomeActivity..。
バックスタックまたはバックキーの動作をオーバーライドするためにハックを使用したことはありません。誰かがこれの原因が何であるかについての手がかりを得ましたか?
TIA、パトリック
android - Android - フラグメントのカスタム ビューが onResume() で機能しない
画面に線を描画するカスタム ビューを作成しました。このビューはフラグメントの xml レイアウトに含まれ、フラグメントのonCreateView
メソッドで次のように取得されます。
mMyCustomView
フラグメントのonCreateView
メソッドで変数をカスタム リスナーに渡し、mMyCustomView.drawLine
リスナー クラスのようなものを呼び出すと、すべて正常に動作します。
mMyCustomView.drawLine
しかし、フラグメントのメソッドを呼び出すとonResume()
、変数とメソッドは同じですが、何も起こりません。
私が考えることができる唯一の理由は、ユーザーがフラグメントと対話するときにリスナーがメソッドを呼び出すonResume()
ことです。これは、ライフサイクルに関する限り、呼び出されるよりも後です。ただし、フラグメント内では、onResume()
AFAIK以降にメソッドを呼び出すことはできません。
編集1:
これは私のカスタムビューがどのように見えるかです:
で addLine(...) を呼び出すと、メソッドの for ループの内側に到達onResume()
したにもかかわらず、線が描画されません。onDraw()
後でリスナー クラス (ユーザーの操作に応答する) に別の行を追加すると、両方の行がキャンバスに描画されます。どういうわけか、ビューの親フラグメントの で canvas.drawLine()
機能しません。onResume()
編集2:
invalidate
フラグメントが親アクティビティのレイアウトに追加された後、カスタム ビューのメソッドを繰り返し呼び出すハンドラーを追加しました。まだ線が引けない!
android - AndroidでOnResumeを実行すると、リストビューが空になります
Androidでは、モバイルをロックおよびロック解除した後、アクティビティが一時停止して再開されます。その時点でリストビューは空になります。plsはonPauseに値を保存し、onResumeで値を取得するのに役立ちます...
前もって感謝します