インテントとアプリケーションのコンテキストに関する一般的なアドバイスを探しています。
スレッド化されたネットワーク リスナーのようなものを実行したり、位置情報を収集したりするサービスを備えたアプリケーションがあり、メインのアクティビティと構造化されたセットで共有される場合、メインのアクティビティはユーザー入力で上記のデータを調整する必要があります。これらのレベル間でこのデータを共有する最もスマートな方法は?
現在、Intents を使用してセットアップを行っていますが、今のところそうなるかもしれませんが、好きではありません。データ全体をシリアル化することはできないため、あちこちにビットをブロードキャストしています。主な問題は、インテントが更新に使用されるプライマリ データ セットがメイン アクティビティに格納されていることです。
データ セットをサービスに移動するか、アプリケーション コンテキストに保存したいと考えています。ただし、メインのアクティビティがデータを調整することがあるため、スレッドの安全性が心配です。たとえば、シングルプレス、ブール値の変更、データセットからのアイテムの削除など...
インテントのポイントはわかりますが、アプリケーションの周りのデータ (部分データ) をシャッフルするための手段としてではなく、アプリケーション コンテキストに格納されたデータを必要とする関数のトリガーとしてインテントをブロードキャストしたいと思います。
アプリケーション コンテキストを合理的に使用して、サービスとアクティビティの間で安全な方法でデータを更新および共有できますか? サービスをバックグラウンドで実行し、ユーザーがアプリに戻ったとき、または方向を変更したときに、アクティビティがデータ セットをプルまたは更新するようにしたいと考えています。ありがとう。
更新/明確化
これはどう。データ共有のためにバインドされたサービス getter/setter メソッドにアクセスするのは安全ですか? サービスにバインドして、パブリック メソッドを介してスレッド化された関数を開始/停止します (これに戻ってバインドしていることに気付いてからしばらく経ちました)。この方法で getter/setter を安全に呼び出すことができますか?