9

私は Android アプリケーションを開発しており、初めてコンテンツ オブザーバーを使用しています。だから私はたくさんのチュートリアルを読んで、なぜそれが提供されているのか、どのように使うのかという概念を得ました.

今、私はブログでこれらの行を読みました

コンテンツ オブザーバーの登録を忘れずに解除してください

そのため、登録したい場合、ContentObserver登録を解除しなければならない状況が何であるかを理解できません。

オブザーバーの目的が達成されれば、登録を解除できます。ただし、ユーザーがアプリケーションをアンインストールするまで観察する必要があります。その後、オブザーバーの登録を解除する理由を確認する必要があります。

そのブログのURLはこちら

http://www.grokkingandroid.com/use-contentobserver-to-listen-to-changes/

4

4 に答える 4

6

を使用して作成された友人リスト画面などを持つアプリケーションがあると想像してくださいFriendListActivity。このアクティビティの UI を作成するには、DB からデータを読み取り、UI を作成します。

ここで、バックグラウンドで実行され、Web サービスを使用してこのデータベースをリモート データベースと同期するサービスもあるとします。

サービスが DB のフレンド リストを更新するたびに、それに応じて UI も更新する必要があります。したがって、これを実現するには、友人の起動FriendListActivity時にコンテンツ オブザーバーを登録し ( の概念を知っていると仮定します)、データベース内の友人リストが変更されるたびに、 内の友人リストも更新します。ユーザーがアクティビティから移動したり、アプリを閉じたりした場合、UI を更新する必要はありません (したがって、DB 変更のイベントを取得する必要はありません)。そのため、コンテンツ オブザーバーの登録を解除します。ActivityURIURIFriendListActivity

次にユーザーがこの画面に来たときに、再度最新のデータを取得し、コンテンツの変更を DB に登録する...

そのため、コンテンツ オブザーバーは通常、アクティビティとデータベース (または特定の URI) の間の関係です。SOActivityが起動されたときに登録し、アクティビティがビューの外に出たときに登録を解除します。

お役に立てれば...

于 2013-04-04T11:51:56.287 に答える
3

ブログ投稿では、次のように述べています。

コンテンツ オブザーバーを登録したら、その登録を解除するのもユーザーの責任です。そうしないと、メモリ リークが発生し、Activity がガベージ コレクションされることはありません。

したがって、あなたActivityが閉じられたら、登録を解除する必要があります-これはonPauseメソッドで行う必要があります。onPauseから離れると、常に呼び出されますActivity

のライフサイクルを確認してくださいActivities: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

于 2013-04-04T11:41:17.053 に答える