11

我正在尝试通过参考此链接在我的 android 项目中实现MVP 模式: https ://github.com/jpotts18/android-mvp

我已经成功实现了视图/演示者/交互器类。我不清楚

  • service呼叫代码放在哪里?

由于我无法在演示者或交互者类中获取上下文,因此我无法将service调用放在那里

  • 在哪里实现GoogleApiClient类?

由于GoogleApiClient还需要上下文来运行,它也不能在没有上下文的情况下在演示者或交互器中实现

4

2 回答 2

7

使用 dagger 可以更轻松地在 Presenter 上注入 Interactor。试试这个链接(https://github.com/spengilley/AndroidMVPService

我正在尝试不用匕首来实现它。但这似乎违反了 MVP 架构。

在 Activity 中,我创建了一个 Interactor 实例。然后使用 Interactor 作为参数之一创建 Presenter 实例。

活动

public class SomeActivity extends Activity implements SomeView {
   private SomePresenter presenter;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      SomeInteractor interactor = new SomeInteractorImpl(SomeActivity.this);
      presenter = new SomePresenterImpl(interactor,this);
   }

   @Override
   protected void onStart() {
     super.onStart();
     presenter.startServiceFunction();
   }

主持人

public interface SomePresenter {
   public void startServiceFunction();
}

演示者实现

public class SomePresenterImpl implements SomePresenter {
   private SomeInteractor interactor;
   private SomeView view;
   public SomePresenterImpl(SomeInteractor interactor,SomeView view){
      this.interactor = interactor;
      this.view = view;
   }
   @Override
   public void startServiceFunction() {
      interactor.startServiceFunction();
   }
}

交互者

public interface SomeInteractor {
   public void startServiceFunction();
}

交互器实现

public class SomeInteractorImpl implements SomeInteractor {
   private Context context;

   public SomeInteractorImpl(Context context) {
      this.context = context;
   }

   @Override
   public void startServiceFunction() {
      Intent intent = new Intent(context, SomeService.class);
      context.startService(intent);
   }
}
于 2016-02-16T01:06:45.113 回答
0

我也在寻找你的第一个问题。但是,我有第二个问题的答案。

答案是匕首2。( http://google.github.io/dagger/ ) 您可以使用 Dagger2 轻松注入 GoogleApiClient 对象。

于 2016-01-20T15:11:23.487 回答