問題タブ [android-architecture-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 投票する
3 に答える
547 参照

android - アクティビティとフラグメントを使用した新しい Android アーキテクチャ コンポーネントの実装

現在、Android が提供するアーキテクチャ コンポーネントを使用してアプリケーションを実装しようとしています。UI パッケージでのみアクティビティを使用するという点では問題ありませんが、フラグメント コンテナー内の 1 つのアクティビティによって保持される複数のフラグメントを実装すると、問題が発生します。フラグメントを使用したデータ リクエストの通信は、フラグメント自体からではなく、そのアクティビティから呼び出す必要があります。この場合、アクティビティのみが必要なビューモデルを登録しますが、各フラグメントのライフサイクルは適切に処理されません...サーバーからデータを要求する 1 つのアクティビティで複数のフラグメントを使用してこの問題に直面し、フラグメントのライフサイクルを認識できるようにするにはどうすればよいですか?アクティビティはビューモデルを呼び出していますか?

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

java - Android アプリのアーキテクチャ: ライフサイクルでユーザー権限を実装

LiveData クラスを拡張した LocationListener があります。Android 6.0 から、パーミッションは実行時に要求されます。今、LiveData クラスを実装しようとしたときに、権限チェックインonActive()機能が必要でした。要求された許可と受け取った結果のために、各アクティビティで定型コードを作成する必要があります。onRequestPermissionsResult()そのようなcheckSelfPermission()機能を LocationListener に移動する方法はあります か?

LocationFragment.java

LastLocationListener.java

0 投票する
0 に答える
449 参照

android - LifecycleRegistryOwner を使用して、アクティビティが有効な場合にのみブロードキャスト レシーバーを有効に保つ方法

場合によっては、サード パーティ ライブラリからブロードキャストを受信する際に問題が発生することがあります。

(特定のアクティビティが有効な場合のみ、ブロードキャストを気にします。)

1 つの使用例は (「アクティビティを有効にしない」をオンにした場合)、アクティビティでサード パーツ ライブラリから別のアクティビティを開始します。

現在のアクティビティは、新しいアクティビティが終了するまで一時的に破棄されます (最初のアクティビティは os によって再作成されます)。

2 番目のアクティビティ (3 番目の部分のライブラリ) では、ブロードキャストを行います。最初のアクティビティはレシーバーを登録しましたが、その onDestroy() でレシーバーが登録解除されたため、ブロードキャストに失敗しました。

同様のケースのライブデータをサポートできる新しいアンドロイドアーチライフサイクルを見ました。ここで適用できるかどうかはわかりません (問題はアクティビティ コンテキストにある可能性があります)。

これは私が思うことです:

LifecycleRegistryOwner から拡張されたアクティビティでは、アクティビティのライフサイクルを監視します。アクティビティはOSによって破棄および再作成される可能性があることを理解していますが(構成変更時など、実際には破棄されていません)、LifecycleRegistryは、アクティビティが本当に破棄された時期を通知します(OSが後で再作成するものではありません)。

したがって、LifecycleRegistryOwner の助けを借りて、LifecycleRegistryOwner によって管理されるライフサイクルで、アクティビティの真の寿命の間、一部のデータを存続させることができます。

問題は、LifecycleRegistryOwner のみのライフ サイクル (真のアクティビティ ライフ) で生きたいブロードキャスト レシーバーがある場合、lifeCycleObser の onStart() でレシーバーを登録し、その onDestroy( で登録を解除することは可能ですか? )? 問題は、受信者を登録するためにこのアクティビティが必要なことです。

アクティビティが破棄されて再作成される可能性があるため、アクティビティの実際の寿命を監視する TheLifeCycleObserver に 1 つのアクティビティ インスタンスを保持するべきではありません。

しかし、レシーバーが常にブロードキャストを受信し (OS がアクティビティを一時的に破棄し、すぐに再作成する場合でも)、この特定のアクティビティが本当に破棄された場合に登録されない場合の解決策は何ですか?

クラスのスニペットを以下に示します。

TheLifeCycleObserver 、 TheBroadcastReceiver および MainActivity

}

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

android - Android アーキテクチャ コンポーネント : LifecycleOwner を使用するときに Activity メソッドを取得する

アーキテクチャ コンポーネントの実装中に、この問題に直面しています

setContentView()ここで AppCompatActivity のようなアクティビティ コンテキスト ベースのメソッドを取得するにはどうすればよいでしょうか。

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

android - ページング ライブラリ android を使用したプログレスバー

サーバーからデータをフェッチしてリサイクラービューに表示するアプリで、新しいアーキテクチャ コンポーネント「ページング ライブラリ」https://developer.android.com/topic/libraries/architecture/paging.htmlを使用しようとしています。

ページング ライブラリは優れた追加機能であり、コンテンツのページ付けを管理するのに役立ちます。すべてのサンプルを確認しましたが、問題なく動作しています。しかし、私が持っている 1 つの要件は、recyclerview の最後までスクロールし、次のページの読み込みが開始されたときに (ページング ライブラリによって管理されます)、下部に進行状況バーの行を表示する必要があるということです。

recyclerview スクロール リスナーと 2 つのビュー タイプでこれを行う方法を知っています。しかし、私が求めている解決策は、「ページング ライブラリ」でこれを行う方法です。私が望むものではないプレースホルダーを有効にするオプションがあります。

これに関するヘルプは大歓迎です。

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

android - 可視性に関するフラグメントのライフサイクルが変更されました

私のアプリには 2 つのフラグメントがあり、そのうちの 1 つ (FragmentSlidingUp) は上にスライドして、もう 1 つ (FragmentContent) を完全に覆うことができます。このライブラリをスライド アップhttps://github.com/umano/AndroidSlidingUpPanelに使用します。私が抱えている問題は、FragmentSlidingUp が上にスライドし、FragmentContent が表示されないときに、FragmentContent の LiveData オブザーバーが一時停止しないことです。フラグメントが表示されていないときにフラグメントのライフサイクル状態を Paused に設定して、フラグメントが再び表示されたときに LiveData オブザーバーが一時停止され、自動的に再開されるようにする方法はありますか? ありがとう。