問題タブ [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 投票する
1 に答える
95 参照

android - Android アプリケーションのライフサイクルを変更する

アクティビティのライフサイクルがどのように管理されているかを理解しようとしていました! ライフサイクルのすべてのイベントを起動している人はいますか? おそらくActivityManagerService?

アクティビティのライフサイクルをカスタマイズして新しいイベントを追加するにはどうすればよいですか? どのような変更を行う必要があるかについてのガイダンスはありますか?

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

android - 前のアクティビティに戻るためにバックプレスが押されたときに呼び出されるライフサイクル?

同じアプリケーション内の別のアクティビティが起動され、バックプレス ボタンをクリックして戻るときに呼び出されるアクティビティの状態は何ですか?

前のアクティビティに戻るプロセス中に呼び出されるライフサイクル メソッドは何ですか?

0 投票する
7 に答える
28741 参照

android - Android:どのような状況でダイアログが表示されるとonPause()が呼び出されますか?

Androidアクティビティドキュメントのスニペット(「フォアグラウンドライフタイム」の行までスクロールダウン)には、次のように記載されています。

アクティビティは、フォアグラウンドに頻繁に出入りする可能性があります。たとえば、onPause()デバイスがスリープ状態になったとき、またはダイアログが表示されたときに呼び出されます。

私はこれをよく理解していません。これはどのような状況で発生する必要がありますか?onPause()問題のダイアログのコンテキストが、ダイアログが表示されるアクティビティと異なる場合にのみ呼び出されますか?

編集:私の疑問を詳細に説明するためのコードサンプルを追加する

上記のドキュメントからの引用によると、次のコードの(または単に)が表示されonPause()たときに、アクティビティのメソッドを呼び出す必要がありますか?ダイアログが表示されたときに「onPausecalled」ログエントリを表示する必要がありますか?AlertDialogDialog

しかし、私はそれが起こるのを見ていません。また、Androidのライフサイクルを正しく理解していれば、そうすべきではありません。それで、その時の文書は何を指しているのでしょうか?

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

android - アプリのライフサイクルで一度何かを呼び出しますか?

アプリが起動されるたびではなく、アプリのライフサイクルで一度だけメソッドを呼び出すには、そのようなメソッドをどこに配置する必要がありますか?

onCreate()どこか他の場所で?

0 投票する
5 に答える
41518 参照

android - アクティビティに関するフラグメントのライフサイクル

状況 アクティビティが非同期操作を待機しており、非同期操作から応答があった後、その中の 2 つのフラグメントに情報を渡す必要があります。

要件 1. レイアウトをロードするには、両方のフラグメントでonCreateView呼び出しを行う必要がありgetActivity()ます。

両方のフラグメントでsetData()メソッドを作成し、アクティビティのライフサイクルでそれらを呼び出す「正しい」場所を探しています。

onCreate()アクティビティが機能しない、onStart()アクティビティが機能しない、およびonStart()フラグメントが機能しない。

何も機能しません。ここで何が欠けていますか?

0 投票する
5 に答える
9264 参照

android - Androidクロノメーター、時間状態を保持(バックグラウンドでカウントし続ける)

ユーザーがそのアクティビティに遭遇した時間からカウントアップするタイマーがあります

私は現在、onCreate中にクロノメーターセットを使用しています(最初は特定の条件が満たされた場合にのみ開始されます)。しかし、アプリとそのすべてのビューが閉じられるまでクロノメーターがカウントアップし続ける必要があります (それを行うための「終了」機能があります)。

問題は、別のタブを見てそのアクティビティに戻るたびに、クロノメーターがゼロにリセットされることです。(これはoncreateに関係していますが、回避方法はわかりません)

クロノメーターの状態またはカウントアップをバックグラウンドで独自に保存する直感的な方法を見つけられませんでした (または、おそらく自分で時間を追跡し、別の時点でクロノメーターを視覚的に更新する方法が見つかりませんでした)。

私が持っていた 1 つのアイデアは、クロノメーターの現在の時間集計を文字列として使用して、既存のアクティビティ更新でテキストビューを保持しながら、サービスでクロノメーターを開始し、サービスにカウントを継続させることでした。

この問題に対する既知のアプローチに関する洞察をいただければ幸いです。

これはタブホストのアクティビティであり、ビューをロードするたびにタブホストが onPause と onResume の両方を呼び出すため、これはさらに複雑です。これにより、ライフサイクル機能が壊れます。

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

android - Android - 再起動後に一連のアクティビティを開く

私の状況があります。彼らが何をしているかに関係なく、私は同じ活動を次々と行っています。アルファベットの最初から名前を付けましょう。ユーザーが私のアプリケーションを使用するとき、彼はアクティビティを通過し、それらの間に独自のパスを作成するため、戻るボタンでそれぞれの順序で戻ることができます。

彼は行為から始めます。A - D - F で、戻るボタンで F から D と A に戻ります。現在、Android システムがアプリケーションが使用されていないか、特定の時間に大量の RAM が必要であると判断すると、システムはそのアプリケーションを強制終了します。私の目標は、開いたアクティビティの順序を含め、アプリケーションを以前の状態に復元する方法を見つけることです。

わかりにくいかもしれないので、以下に例を示します。

ユーザーはアクティビティ A (ログイン) - D - F - G を開いて最小化し、しばらくするとアプリが強制終了されます。彼がこのアプリケーションを再び開始するとき、彼はアクティビティ A でログインする必要があり、アクティビティ G (= 彼は前回そこにいた) を見る必要がありません。また、戻るボタンを押すと、アクティビティ F、次にアクティビティ D を実行します。 on... 一連のアクティビティを復活させるようなものです。アクティビティ (D、F、G) に保存されているすべての情報を永続化する必要があることはわかっていますが、そのようなアプリの状態を永続化することは実際に可能ですか?

これについてのコメントをありがとう

解決:

アプリケーションの状態を識別するフラグを追跡しています。フラグが 0 の場合は、新しいアクティビティを正常に開いていることを意味します。各アクティビティの開始時に、すべてのアクティビティ履歴を含む共有設定文字列に入れました。各アクティビティには独自の ID があります (これも sharedPref)。別の共有設定では、onPause が発生したときに、文字列フォーミュラー データ (または GUI を使用したデータ) として保存しています。flag を 1 に設定します。アプリが起動し、flag が 1 のときに、sharedPref からアプリケーション スタックを復活させます。それぞれに別の共有設定からデータを設定します。以上で、アプリケーションの状態が復活します:-)

0 投票する
9 に答える
39180 参照

android - フラグメント内にフラグメントビューページャーを表示する

ViewPagerを含むフラグメントがあります。ViewPagerは、フラグメントのセットを含むアダプターに関連付けられています。

親フラグメントをロードするIllegalStateExceptionと、次のメッセージが表示されますjava.lang.IllegalStateException: Recursive entry to executePendingTransactions

いくつかの調査により、システムは別のフラグメント内のフラグメントを表示できないという結論に達しましたが、ViewPagerを使用してこれを正確に行うことができるという兆候があるようです(他のフラグメントで使用するViewPagerのバグ)。

実際、mPager.setAdapter(mAdapter)押されたときにViewPagerを呼び出すボタンを親フラグメントに追加すると、ViewPagerが正常に読み込まれます。これは理想的ではありません。

その場合、問題はフラグメントのライフサイクルに関連している必要があります。したがって、私の質問はこれです:他の誰かがこの問題を回避する方法を見つけましたか?もしそうなら、どのように?

フラグメントトランザクションが完了するまで、ViewPagerでのアダプターの設定を遅らせる方法はありますか?

これが私の親フラグメントコードです:

そしてアダプター:

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

android - Android: 実行中 + 一時停止状態のタスク リストの読み取り

実行中のすべてのアプリケーションのパッケージ名を読み取りたい。

実行中のアプリケーションを読み取るための私のコードは次のとおりです。

出力 :

しかし、これはLifeCycle で Running State を持つアプリケーションのみを示しています。

すべてのタスク (実行中の状態と一時停止中の状態を含む) を読み取るにはどうすればよいですか?

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

android - 向きの変化の状態を処理する

オリエンテーションイベントが発生したすべての状態をどのように処理できますか?

何かのようなもの:

  • 開始する前に(いくつかの画面状態を保存してください)
  • 起こったとき(アニメーションの目的)
  • それが起こった後(画面の状態をロードする)

onConfigurationChangedが方向の変更を処理できることを知っています。そして私はこれを試しました:

saveStateに、ギャラリーで表示されたlastIndexをSharedPreferencesに保存します。loadStateで、SharedPreferencesからlastIndexを取得し、それをギャラリーの現在のインデックスにします。

また、loadStateをonResumeメソッドに入れてみましたが、向きの変更が発生した後は呼び出されません。