android – 用Dagger 2和RxJava2包装SharedPreferences

android – 用Dagger 2和RxJava2包装SharedPreferences,第1张

概述我是否需要包装 Android SharedPreferences类?如果是的话,能否请您提供一个简单的工作示例? 我知道如何使用SharedPreferences,但是当涉及到包装它并提供Dagger 2和RxJava2时,我很困惑. 我通常只使用名为LocalStorage的接口或类似的东西来包装它.然后将一个Context注入实现并像往常一样实现您的SharedPreferences.如果你 我是否需要包装 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方法,例如你的应用程序类).

@Modulepublic 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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1122792.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存