标签: mvp

GWT 2.1中包含的MVP框架是否会使其他GWT MVP框架变得多余?

GWT 2.1包括一个MVP框架,其中包括Google的Ray Ryan在Google I/O 2009中概述的PlaceService的实现.

那次谈话激发了一些像MVP这样的框架

GWT 2.1是否使这些额外的框架变得多余?

mvp gwt design-patterns gwt-platform

11
推荐指数
1
解决办法
875
查看次数

GWT 2.2 MVP与GWT 2.1活动场所

我开始开发一个大型GWT应用程序,在阅读了大量文章和博客文章之后,我试图了解2.2 Model-View-Presenter2.1 Activities-Places设计模式之间的区别是什么?你推荐哪种模式?为什么?我应该仅仅因为它是"更新"而使用MVP吗?另一方面,地方活动似乎更"直观"......或者我完全忽略了这一点,而MVP只是活动场所的改进版本?

感谢所有GWT大师们:-)

mvp gwt gwt-mvp

11
推荐指数
1
解决办法
4797
查看次数

如何使用Android中的MVP模式从我的Interactor启动服务?

我遵循的模型视图演示者(MVP)模式类似于Antonio Leiva在这里找到的例子:antoniolg/github.

我一直在玩它很多,我想知道如何serviceinteractor图层开始.通常情况下,我一直在retrofit调用我的电话,interactor但我想知道是否有办法从服务器启动服务,interactor所以我可以retrofit在服务中运行我的电话.这里的问题是我没有运行服务的活动上下文,如果我要将上下文暴露给它,它会破坏MVP的目的interactor.

我也不太确定这是否是一件好事(从交互者那里开始服务).我正在考虑从presenter层中启动服务,但是我正在朝着如何接近它的方向走向死胡同.

如果有办法解决这个问题,请帮助一个人吗?如果这不是一个好方法,或者启发我.

java mvp service android

11
推荐指数
1
解决办法
891
查看次数

主持人注射Dagger 2

我刚刚开始使用Dagger 2,我在网上发现了数千个指南,每个指南都有不同的实现,现在我有点困惑.所以基本上这就是我现在写的:

AppModule.java:

@Module
public class AppModule {

 Application mApplication;

 public AppModule(Application application) {
    mApplication = application;
 }

 @Provides
 @Singleton
 Application providesApplication() {
    return mApplication;
 }
}
Run Code Online (Sandbox Code Playgroud)

DataModule.java:

@Module
public class DataModule {

private static final String BASE_URL = "http://beta.fridgewizard.com:9001/api/";

@Provides
@Singleton
NetworkService provideNetworkService() {
    return new NetworkService(BASE_URL);
}

@Provides
@Singleton
SharedPreferences provideSharedPreferences(Application app) {
    return PreferenceManager.getDefaultSharedPreferences(app);
}
}
Run Code Online (Sandbox Code Playgroud)

PrefsModel.java:

@Module(includes = DataModule.class)
public class PrefsModel {

@Provides
@Singleton
QueryPreferences provideQuery(SharedPreferences prefs) {
    return new QueryPreferences(prefs);
}
}
Run Code Online (Sandbox Code Playgroud)

AppComponent.java(我暴露了QueryPreferences对象,因为我需要在演示者中使用它,希望以这种方式正确):

@Singleton …
Run Code Online (Sandbox Code Playgroud)

java mvp android dependency-injection dagger-2

11
推荐指数
2
解决办法
1万
查看次数

是否有RxJava等效的Handler.postDelayed(Runnable r,long delayMillis)

我试图调用一个返回void(Java原始类型)的方法.我想延迟调用一个预定义的毫秒数.我知道这可以简单地使用Handler我喜欢不使用它.

我试着这样做:

Observable.just(getView().setAttachments(attachments)).delay(50, TimeUnit.MILLISECONDS);
Run Code Online (Sandbox Code Playgroud)

但是,有一个编译错误,即:

Observable.just(java.lang.Void) cannot be applied to (void)
Run Code Online (Sandbox Code Playgroud)

还有另外一种方法吗?我不想使用的原因Handler是代码是在Presenter(MVP模式)中定义的,我不想在仅Java类中使用Android特定代码.我更喜欢它是一个冷的Observable,因为我不必订阅它,只调用一次方法.

java mvp multithreading android rx-java

11
推荐指数
1
解决办法
6026
查看次数

互联网检查,使用MVP,RX和Retrofit时的位置

我已经完成了这个这篇文章.所以我真的同意主持人不应该知道Android特定事情的第二篇文章.所以我在想的是将互联网检查放在服务层.我正在使用Rx Java进行网络调用,所以我可以在进行服务调用之前进行网络检查,这样我就需要手动抛出和IOException,因为我需要在网络不可用时在视图上显示错误页面,另一个选择是我为没有互联网创建自己的错误类

Observable<PaginationResponse<Notification>> response = Observable.create(new Observable.OnSubscribe<PaginationResponse<Notification>>() {
            @Override
            public void call(Subscriber<? super PaginationResponse<Notification>> subscriber) {
                if (isNetworkConnected()) {
                    Call<List<Notification>> call = mService.getNotifications();
                    try {
                        Response<List<Notification>> response = call.execute();
                        processPaginationResponse(subscriber, response);
                    } catch (IOException e) {
                        e.printStackTrace();
                        subscriber.onError(e);
                    }
                } else {
//This is I am adding manually
                    subscriber.onError(new IOException);
                }
                subscriber.onCompleted();
            }
        });
Run Code Online (Sandbox Code Playgroud)

我的另一种方法是将拦截器添加到OkHttpClient并将其设置为改装

OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
        builder.addInterceptor(new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                if (!isNetworkConnected()) {
                    throw new …
Run Code Online (Sandbox Code Playgroud)

architecture mvp android rx-java retrofit2

11
推荐指数
1
解决办法
4866
查看次数

如何使用Dagger 2将多个组件注入同一个对象

所以我有一个ApplicationComponent用于将单例注入到我的片段和演示者中,但我正在尝试创建一个组件以注入AppComponent所做的同一个演示者.沿着这些方向的东西.

@Component{modules = FileManagerModule.class}
public interface FileManagerComponet
{
    public void inject(MyPresenter presenter);
}

@Component{modules = AppModule.class}
public interface AppComponent
{
    public void inject(MyPresenter presenter);
}

@Module
public class AppModule
{
    private Context appContext;
    @Provides
    @Singleton
    public SharedPreferences preferences()
    {
        return appContext.sharedPreferences();
    }
    ...
}

@Module
public class FileManagerModule
{
    private Context activityContext;
    @Provides
    public FileManager FileManager()
    {
        return new FileManager(activityContext);
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

mvp android dagger-2

11
推荐指数
1
解决办法
6816
查看次数

在MVP模型中需要上下文

我需要在模型中使用活动的Context,同时在android中使用MVP来获取所有已安装的应用程序的列表.访问上下文的正确方法是什么,或者在遵循MVP模式时实现相同的任何替代方法.

这是课程:

public class MainActivity extends BaseActivity
    implements MainView,View.OnClickListener {

private MainPresenter mPresenter;



private Button sendButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    init();
    createPresenter();


}

private void init(){

    sendButton= (Button) findViewById(R.id.button_send);
    sendButton.setOnClickListener(this);
}

private void createPresenter() {
    mPresenter=new MainPresenter();
    mPresenter.addView(this);
}





@Override
public void onClick(View view) {
    switch (view.getId()){
        case R.id.button_send:
            mPresenter.onSendButtonClick();
            break;
    }
}

@Override
public void openOptionsActivity() {
    Intent intent=new Intent(this,OptionsActivity.class);
    startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)

}

公共类MainPresenter扩展BasePresenter {

MainModel model;
public void onSendButtonClick(){

   model.getListOfAllApps();

}

@Override
public void …
Run Code Online (Sandbox Code Playgroud)

mvp android

11
推荐指数
1
解决办法
1万
查看次数

如何在Android中的MVP架构中的两位演示者之间共享数据?

这是一个示例场景:

我有一个活动(视图)和该视图的演示者.演示者从网络API中提取用户列表,并使用List对象将其保存在内存中.活动包含不同类型的片段,以根据User.type显示有关用户的内容.这两个片段(UserType1Fragment和UserType2Fragment)也有各自的演示者.

活动的演示者决定下一个片段的类型(I或II).片段的演示者决定用户对象的显示方式,并处理名为killUser()的按钮单击事件.这应该更新活动的演示者中的List对象.

这就是问题所在:

片段如何呈现对活动演示者中的数据的引用?演示者不应直接相互沟通.也许我应该将List抽象到存储库/交互器中?如何在演示者之间共享列表?

mvp android design-patterns

11
推荐指数
1
解决办法
5407
查看次数

MVP适配器数据缓存

我正在开发遵循MVP架构的项目.通常,当我使用recyclerView时,我的演示者控制适配器数据.但是现在我需要使用来自缓存(或类似缓存的数据)的数据制作回收器适配器,回收器的大小不依赖于缓存大小,所以我通过HashMap进行缓存,其中密钥是 - 回收器的位置,如果有一个项目然后数据显示地图,否则空行与"添加事件"btn.我无法意识到这种结构中缓存的位置 - 模型(Dao或类似CacheManager)或适配器.

缓存的想法如下:我有一些类型的事件存储在数据库中,每个事件修改都在db中更改它 - 所以缓存也必须更新.

主要问题是:在哪里保留此缓存并将其加载到适配器,如何使其与数据库更改保持同步.

PS我也尝试使用RX,所以如果可以用它来解决 - 试试会很有趣.

PPS如果它是Repository模式是解决方法 - 欢迎.前一段时间阅读它.

mvp android caching

11
推荐指数
1
解决办法
1196
查看次数