私はXMPPチャットアプリケーションの開発に取り組んでおり、aSmackを使用しています。XMPP接続を保持し、名簿やパケットリスナーなどを登録するサービスがあります。
現在、私のサービスはログインしてからconnection.getRoster()を呼び出し、すべてのRosterEntry(およびそれらのステータス)をシングルトンクラスに格納/更新します。次に、メインアクティビティで、Singleton.getInstance()。getRosterEntrys()を呼び出して、これらのRosterEntryをすべて取得し、listViewにデータを入力します。
当然のことながら、私はあらゆる種類の競合状態に陥っていますが、これはスレッドセーフではありません。私はシングルトンのアイデアを完全に捨てることを考えていますが、そうするための最良の方法はわかりません。
スレッドセーフな方法でサービスからアクティビティにセットを転送するための最良の方法は何でしょうか?SynchronizedSetでシングルトンを使用することについての言及を見ました。これは調べる価値のあるものですか?他に何か提案はありますか?