私はAndroidアプリケーションをビルドしています。このアプリケーションには、ユーザーのプロファイル情報を保持するためのクラスUserがあります。ユーザーが作成されると、SharedPreferencesファイルに保存されるので、次回にアプリケーションを起動したときに最後に作成したユーザーを読み込むことができます。私はまた、新しく作成されたユーザーのオブジェクトを保持するSingletonクラスを持っているので、他のクラスでも使用できます。私は、SharedPreferencesファイルを読んで、フラグメントを変更するたびにユーザーが必要となるのを避けるためにこれを行いました。私の質問は:Singletonは、アプリケーション全体のメモリに変数を保持するための適切な方法を使用していますか?それを目的としていたのですか、それともオブジェクト指向プログラミングの原則を維持する別の方法がありますか?アクセサーメソッドではなく、アクティビティーで変数を作成する方が良いでしょうか?SingletonはAndroidアプリケーションのメモリにデータを保存する最良の方法ですか?
2
A
答えて
0
はい、そうするのが良い方法です。そして、シングルトンオブジェクトのデータを(あたかもあなたが言及したように)共有のプリファレンスから毎回アクセスするほうがいいです。私たちは、アプリケーションでセッションの目的のためにユーザーシングルトンを意味します。つまり、アプリケーションが変数データを実行している間はアクセス可能です。アクティビティレベルで変数を作成できますが、それは非常に悪いアプローチです。要するに、あなたの目的に使用しているアプローチが最善の方法です。
0
私は以下を使用します: インタフェースCurrentUser。 CurrentUserには、ユーザーを取得および更新するメソッドがあります。ユーザーは、DB、環境設定または混合して保存することができます。 必要に応じてDaggerを使用してCurrentUserを注入します。 Daggerはシングルトンの品質を保証しないため、CurrentUserの実装自体はシングルトンにする必要があります。 CurrentUserがRxJavaストリームやLiveDataのようなものを持っていて、オブザーバーを最新の状態に保つことができれば、ボーナスポイントになります。
シングルトンの代わりに、保持されたフラグメントでフラグメントホルダーパターンを実装することもできますが、状況によってはシングルトンが優れているようです。インターフェイスと注入を使用してテスト容易性を損なわないようにし、コンポーネントを分離した状態に保つようにしてください。
関連する問題
- 1. 実際のデータをアプリケーションに保存する最良の方法
- 2. ユーザージャーナルエントリをAndroidアプリケーションに保存する最良の方法は何ですか?
- 3. 多くの株価データをメモリに保存する最良の方法(可変)
- 4. 大量のデータを.Netアプリケーションに保存/ロードする最も良い方法は?
- 5. WinRTアプリケーションの設定を保存する最良の方法は?
- 6. 私のAndroid Appにインテントキーを保存する最良の方法
- 7. プレゼンテーション固有のデータをreact-reduxアプリケーションに保存する最も良い方法
- 8. .NET 4.0アプリケーションに非公開構成データを保存する最良の方法
- 9. mysqlにデータを保存する最も良い方法は?
- 10. Pythonでデータを保存する最良の方法
- 11. このデータを保存する最良の方法は何ですか?
- 12. Android用MySQLデータベースを保存する最良の方法は何ですか?
- 13. マインドマップデータを保存する最良の方法は何ですか?
- 14. ビデオストリームを保存する最良の方法は何ですか?
- 15. NativeScriptアプリケーションでユーザートークンを保存する最も良い方法
- 16. Android - 複数のレイアウトバリエーションを保存する最も良い方法
- 17. Androidで一般的なデータを保存する最も良い方法
- 18. 機密データを保存する最良の方法
- 19. データを保存する最良の方法クライアント側
- 20. データを保存する最良の方法
- 21. C++でデータを保存する最も良い方法
- 22. emberボタンに "temp"データを保存する最も良い方法
- 23. 「イベント」データをAWSに保存する最も良い方法
- 24. BoltDBにデータを保存する最も良い方法
- 25. PHP WebサービスとAndroid/Javaアプリケーションの間でデータを保護する最も良い方法は何ですか
- 26. WPFアプリケーションでローカルにデータを保存する最も良い方法は何ですか?
- 27. アプリケーションのモバイル状態をメモリに保存する方法は?
- 28. 私のWebアプリケーションに文言を保存する最も良い方法は?
- 29. アプリケーションのメモリ不足を回避する最良の方法
- 30. テキストボックス(ASP.NET)に値を「保存」する最良の方法は?
私が理解しているところでは、情報はシングルトンクラスに保存されていますが、コードはこの方法でよりクリーンでモジュラーですか? – D3bian0s
はい、コードが優れています。あなたのクライアントによってシングルトンのインスタンスを取得することは悪い習慣ですが、シングルトンのライフタイムには問題はありません。 シングルトンはステートフルなのでテストするのが難しいかもしれませんので、コンストラクタをpackage-privateにし、それぞれのテストでシングルトンの新しいインスタンスを使用することを検討してください。 – charlag