SharedPreferencesのデータをアクティビティにキャッシュする必要がありますか?

lexicore

私は、ユーザーがいくつかのトピックをサブスクライブできるGCMベースのアプリケーションに取り組んでいます。

ユーザーがサブスクライブしているトピックを2か所で知る必要があります。

  • 主なアクティビティ-UIに表示SubscribeまたはUnsubscribeボタンを表示する
  • GCMリスナーサービス-メッセージをフィルタリングし、を介して「廃止された」サブスクリプションを処理しGcmPubSubます。基本的に、リスナーがアプリのトピックのリストにないトピックのメッセージを受け取った場合、おそらくGCMサーバーに「廃止された」サブスクリプションがあり、サブスクリプションを解除する必要があります。

つまり、基本的に、いくつかの共通データにアクセスし、両方がこのデータを変更できるアクティビティとサービスがあります。

アクティビティとサービスの間でデータを共有するためのオプションの1つは、共有設定を使用することであることを読みました。

Set<String>どのSharedPreferencesサポートを共有するかについてはかなり満足しているので、これは私の場合に適しています。ユーザーはおそらくいくつかのトピック(たとえば、最大10)に興味があるでしょう。

ユーザーがトピックにサブスクライブしているかどうかを確認するための私のコードは次のとおりです。

SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE);
Set<String> subscribedTopics = preferences.getStringSet(AufzugswaechterPreferences.SUBSCRIBED_TOPICS, Collections.<String>emptySet());
boolean subscribedForTopic = subscribedTopics.contains(topic);

サブスクリプションを変更するコードは次のとおりです(たとえば、サブスクリプション解除)。

SharedPreferences preferences =
        PreferenceManager.getDefaultSharedPreferences(getContext());
Set<String> topics = new TreeSet<String>(preferences.getStringSet(AufzugswaechterPreferences.SUBSCRIBED_TOPICS, Collections.<String>emptySet()));
topics.remove(topic);
preferences.edit().putStringSet(AufzugswaechterPreferences.SUBSCRIBED_TOPICS, topics).apply();

しかし、それが適切な方法であるかどうか、今私は疑問を持っています。基本的に、すべてのチェック(UIまたは受信メッセージ)および変更の共有設定にアクセスします。

これは正しい方法ですか?プリファレンスを介してアクティビティとサービス間で直接データを共有する必要がありますか、それとも何らかの方法で値をキャッシュする必要がありますか?

サイバーサム

SharedPreferencesImplはすでに共有データをキャッシュしているSharedPreferencesため、データをキャッシュする必要はありません

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Androidのあるアクティビティから別のアクティビティに常にデータを送信する必要があります

分類Dev

ログインページを作成するには、ログインアクティビティを作成する必要がありますか、それともテキストビューとボタンを使用して空のアクティビティを作成する必要がありますか?

分類Dev

あるアクティビティから別のアクティビティにデータを渡すことはできますが、アプリケーションがクラッシュします

分類Dev

Symfony4ドクトリンユニットテスト:エンティティのキャッシュに古いデータがありますか?

分類Dev

Android ReCaptcha :(同期!)エグゼキューターオブジェクトをアクティビティにインスタンス化すると、そのスレッド(およびUI)がクラッシュする可能性がありますか?

分類Dev

アクティビティ図にすべてのアクターを描く必要がありますか?

分類Dev

並行キューの `.barrier`をすぐにアクティブにする必要がありますか?

分類Dev

アクティビティのスタックを使用する必要がありますか?

分類Dev

ビュークラス内のメインアクティビティからコンテキストを取得する必要があります

分類Dev

フラッターアプリに画像エディター用のAPIはありますか?画像にテキストを追加する必要があります

分類Dev

Akkaではスタッシュキャパシティをどのように制限する必要がありますか?

分類Dev

DDDアーキテクチャのロールユーザーによるデータのフィルタリングに関連するクエリロジックをどこに配置する必要がありますか

分類Dev

チャートの位置を変更するコードでは、ターゲットシートをアクティブ化する必要がありますか?

分類Dev

構成データをキャッシュするためにプロパティまたはディクショナリオブジェクトを使用する必要があります

分類Dev

このコードをフラグメント/アクティビティまたはビューモデルに書き込む必要がありますか?

分類Dev

通知マネージャーを使用して、あるアクティビティから別のアクティビティにデータを渡します

分類Dev

Android Studioは間違ったアクティビティを開始しますが、アプリのデータとキャッシュをクリアすると、アプリは通常どおり起動します

分類Dev

分析とクラッシュにのみ使用する場合、Firebaseでセキュリティルールを設定する必要がありますか?

分類Dev

Android-アクティビティ-OnDestroyメソッドでビューをnullに設定する必要がありますか?

分類Dev

メッセージキューアクティベーションからのプロシージャをループに設定する必要がありますか?

分類Dev

アプリケーションのどの層がセキュリティロジック(許可、承認)を保持する必要がありますか?

分類Dev

UploadArchiveのアクティビティをキャプチャし、Gradleタスクを公開する必要があります

分類Dev

クリーンアーキテクチャ-シンプルなビューロジックをプレゼンターまたはビューに配置する必要がありますか?

分類Dev

Android FirebaseのすべてのアクティビティにAuthStateListenerを追加する必要がありますか?

分類Dev

Android FirebaseのすべてのアクティビティにAuthStateListenerを追加する必要がありますか?

分類Dev

特定のアクティビティでトップアプリバーを削除する必要があります

分類Dev

あるアクティビティから別のアクティビティにデータを渡すと、強制終了が発生します

分類Dev

Xamarinでのアクティビティごとに異なるアダプターを作成する必要がありますか?

分類Dev

ビューモデルでライブデータオブザーバーを作成できますか?または、フラグメント/アクティビティを常に監視する必要がありますか?

Related 関連記事

  1. 1

    Androidのあるアクティビティから別のアクティビティに常にデータを送信する必要があります

  2. 2

    ログインページを作成するには、ログインアクティビティを作成する必要がありますか、それともテキストビューとボタンを使用して空のアクティビティを作成する必要がありますか?

  3. 3

    あるアクティビティから別のアクティビティにデータを渡すことはできますが、アプリケーションがクラッシュします

  4. 4

    Symfony4ドクトリンユニットテスト:エンティティのキャッシュに古いデータがありますか?

  5. 5

    Android ReCaptcha :(同期!)エグゼキューターオブジェクトをアクティビティにインスタンス化すると、そのスレッド(およびUI)がクラッシュする可能性がありますか?

  6. 6

    アクティビティ図にすべてのアクターを描く必要がありますか?

  7. 7

    並行キューの `.barrier`をすぐにアクティブにする必要がありますか?

  8. 8

    アクティビティのスタックを使用する必要がありますか?

  9. 9

    ビュークラス内のメインアクティビティからコンテキストを取得する必要があります

  10. 10

    フラッターアプリに画像エディター用のAPIはありますか?画像にテキストを追加する必要があります

  11. 11

    Akkaではスタッシュキャパシティをどのように制限する必要がありますか?

  12. 12

    DDDアーキテクチャのロールユーザーによるデータのフィルタリングに関連するクエリロジックをどこに配置する必要がありますか

  13. 13

    チャートの位置を変更するコードでは、ターゲットシートをアクティブ化する必要がありますか?

  14. 14

    構成データをキャッシュするためにプロパティまたはディクショナリオブジェクトを使用する必要があります

  15. 15

    このコードをフラグメント/アクティビティまたはビューモデルに書き込む必要がありますか?

  16. 16

    通知マネージャーを使用して、あるアクティビティから別のアクティビティにデータを渡します

  17. 17

    Android Studioは間違ったアクティビティを開始しますが、アプリのデータとキャッシュをクリアすると、アプリは通常どおり起動します

  18. 18

    分析とクラッシュにのみ使用する場合、Firebaseでセキュリティルールを設定する必要がありますか?

  19. 19

    Android-アクティビティ-OnDestroyメソッドでビューをnullに設定する必要がありますか?

  20. 20

    メッセージキューアクティベーションからのプロシージャをループに設定する必要がありますか?

  21. 21

    アプリケーションのどの層がセキュリティロジック(許可、承認)を保持する必要がありますか?

  22. 22

    UploadArchiveのアクティビティをキャプチャし、Gradleタスクを公開する必要があります

  23. 23

    クリーンアーキテクチャ-シンプルなビューロジックをプレゼンターまたはビューに配置する必要がありますか?

  24. 24

    Android FirebaseのすべてのアクティビティにAuthStateListenerを追加する必要がありますか?

  25. 25

    Android FirebaseのすべてのアクティビティにAuthStateListenerを追加する必要がありますか?

  26. 26

    特定のアクティビティでトップアプリバーを削除する必要があります

  27. 27

    あるアクティビティから別のアクティビティにデータを渡すと、強制終了が発生します

  28. 28

    Xamarinでのアクティビティごとに異なるアダプターを作成する必要がありますか?

  29. 29

    ビューモデルでライブデータオブザーバーを作成できますか?または、フラグメント/アクティビティを常に監視する必要がありますか?

ホットタグ

アーカイブ