android – 用Dagger 2和RxJava2包装SharedPreferences
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android – 用Dagger 2和RxJava2包装SharedPreferences,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2201字,纯文字阅读大概需要4分钟。
内容图文
![android – 用Dagger 2和RxJava2包装SharedPreferences](/upload/InfoBanner/zyjiaocheng/759/ce004b10faff4b84b3f0d8de71174872.jpg)
我是否需要包装Android SharedPreferences类?如果是的话,能否请您提供一个简单的工作示例?
我知道如何使用SharedPreferences,但是当涉及到包装它并提供Dagger 2和RxJava2时,我很困惑.
解决方法:
我通常只使用名为LocalStorage的接口或类似的东西来包装它.然后将一个Context注入实现并像往常一样实现您的SharedPreferences.如果你想使用Rx,只需确保你的接口方法返回Observables.
然后,只要你需要使用SharedPeferences,只需注入一个LocalStorage就可以了.
编辑:我不知道你需要多少代码,但这里是一个示例.
首先定义一个接口
public interface LocalStorage {
void writeMessage(String message);
Observable<String> readMessage();
}
然后使用SharedPreferences编写此接口的实现.那么我们需要做些什么呢?好吧,我们真正需要的只是一个Context,但是我们不用担心,当我们在dagger 2模块中创建LoginStorage时,我们将通过构造函数传递一个.
public class SharedPrefStorage implements LocalStorage {
private Context context;
public SharedPrefStorage(Context context) {
this.context = context;
}
@Override
public void writeMessage(String message) {
context.getSharedPreferences("sharedprefs", Context.MODE_PRIVATE)
.edit().putString("myMessage", message).apply();
}
@Override
public Observable<String> readMessage() {
return Observable.fromCallable(new Callable<String>() {
@Override
public String call() throws Exception {
return context.getSharedPreferences("sharedprefs", Context.MODE_PRIVATE)
.getString("myMessage", "");
}
}
});
}
如你所见,我们只是像往常一样读取和写入值,没什么特别的.现在我们将它添加到我们的Dagger 2 AppModule(或者你决定称之为的任何东西).我们已经知道我们需要一个上下文来使SharedPrefStorage工作,所以把它作为一个参数,dagger会注入它(前提是你有一个带有上下文的@Provides方法,例如你的应用程序类).
@Module
public class AppModule {
private MyApplication app;
public AppModule(MyApplication app) {
this.app = app;
}
@Provides
@Singleton
public MyApplication provideApp() {
return app;
}
@Provides
@Singleton
public LocalStorage provideLocalStorage(MyApplication context)
return new SharedPrefStorage(context);
}
}
然后,当然,让我们将它添加到我们的Dagger 2组件中,这样我们就可以实际暴露LocalStorage并将其注入到我们想要的任何地方.
@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {
LocalStorage localStorage();
}
现在我们可以在需要的时候注入LocalStorage.我希望这可以解决问题.
内容总结
以上是互联网集市为您收集整理的android – 用Dagger 2和RxJava2包装SharedPreferences全部内容,希望文章能够帮你解决android – 用Dagger 2和RxJava2包装SharedPreferences所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。