Articles of mvp

Realm,RxJava,asObservable()和doOnUnsubscribe()

在我的Android项目中,我使用realm作为我的数据存储引擎。 我喜欢它! 我也使用RxJava,因为它使“线程化”变得如此简单,我真的很喜欢整个“react native思维”。 我喜欢它! 我使用MVP模式+一些“清洁架构”的想法来构建我的应用程序。 我的Interactors是唯一了解Realm 。 我在Observable的帮助下公开数据,如下所示: @Override public Observable getHomeTown() { final Realm realm = Realm.getDefaultInstance(); return realm.where(City.class).equalTo(“name”, “Cluj-Napoca”).findAllAsync().asObservable() .doOnUnsubscribe(new Action0() { @Override public void call() { realm.close(); } }) .compose(new NullIfNoRealmObject()); } 问题是我的doOnUnsubscribe副作用在Realm可以执行其操作之前被调用,处理暴露的observable: Caused by: java.lang.IllegalStateException: This Realm instance has already been closed, making it unusable. at io.realm.BaseRealm.checkIfValid(BaseRealm.java:344) at io.realm.RealmResults.removeChangeListener(RealmResults.java:818) at […]

MVP Android – 在哪里保存视图状态?

我对在Android上使用MVP的状态保存有些怀疑。 我将片段/活动定义为视图,然后实现相应的演示者。 我的例子很简单: 我有一些checkbox和微调器的活动。 如果活动被Android系统销毁然后重新创建,我应该在哪里保存这些微调器和checkbox状态? 在视图? 在主持人? 如果在视图上,我应该在视图上还是在演示者上有恢复逻辑? 谢谢!

Android MVP,检查互联网连接

我正在Andorid应用程序上实现MVP模式,我怀疑检查互联网连接的最佳位置在哪里。 在进行任何网络通话之前,我通常会检查是否有互联网连接。 那么,我应该在Activity或Presenter中查看它? 我认为Presenter会是一个不错的地方,所以它决定做什么,但是我不是百分之百确定如果我应该把它放在活动中并且避免打电话给Presenter。

在MVP中是View或Presenter的onClick责任吗?

在MVP模式中谁负责处理用户界面的点击? 例如,非MVP方法将是这样的: counterButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { totalClicks++; counterTextView.setText(“Total clicks so far: “+totalClicks); } }); 使用MVP是onClick的Presenter的责任吗? 或View可以处理? 有人可以澄清一下吗?

Android MVP:在Presenter中安全使用Context

在我的应用程序中,我使用ContentProvider并使用LoaderManager.LoaderCallbacks. 片段(查看) public class ArticleCatalogFragment extends BaseFragment implements ArticleCatalogPresenter.View, LoaderManager.LoaderCallbacks { @Override public Loader onCreateLoader(int id, Bundle args) { return onCreateArticleCatalogLoader(args); } @Override public void onLoadFinished(Loader loader, Cursor data) { data.registerContentObserver(new LoaderContentObserver(new Handler(), loader)); updateUI(data); } private Loader onCreateArticleCatalogLoader(Bundle args) { int categoryId = args.getInt(CATEGORY_ID); Loader loader = new ArticleCatalogLoader(this.getActivity(), categoryId); return loader; } } […]

在Android MVP中放置BroadcastReceiver的位置?

我有一个接收网络连接事件的BroadcastReceiver实现。 它在AndroidManifest.xml中声明,并在网络事件发生时由Android自动调用。 广播接收器: public class ConnectivityChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.v(TAG, “action: ” + intent.getAction()); Log.v(TAG, “component: ” + intent.getComponent()); } } AndroidManifest.xml中: … 我想在这里为我的应用程序使用Google的MVP示例架构: https://github.com/googlesamples/android-architecture/tree/todo-mvp/ 使用上面的架构,只是想知道: 我的BroadcastReceiver应放在哪里? 如果我的BroadcastReceiver需要写入数据库,那么最好的方法是什么? 如果我的BroadcastReceiver需要更新UI,那么最好的方法是什么?

如何使用适用于Android的MVP模式控制ListView

我目前正在使用MVP Pattern开发一个Android应用程序。 当我尝试开发一个Activity时,我应该使用ListView。 所以我正在使用Adapter for ListView。 但我听说适配器类似于MVP模式上的Presenter。 我想如果Apdater对Presenter很熟悉,那么我应该让Presenter更新ListView而不是Adapter。 遇到这种情况时,如何开发ListView? 只需使用适配器并继续使用MVP模式? 谢谢你的阅读。

视图之间的共享元素转换(不是活动或片段)

假设我正在使用基于视图的方法来开发Android应用程序,例如以下文章中所述: http : //corner.squareup.com/2014/10/advocating-against-android-fragments.html 所以现在我有两个全屏视图。 一个是可见的,包含一个图像网格。 另一个是隐藏的,是待点击图像的详细视图。 如果在单击网格中的图像时没有转换,则将隐藏网格视图并显示详细视图。 现在,如果我想要一些类似于网格视图中的小图像和详细视图中的较大图像之间的共享元素过渡的内容。 这样的事情可能吗?

Android MVP – 如何在活动演示者和片段演示者之间进行通信

我有一个包含3个片段的活动,目前我使用的是ViewPager。 我想实现MVP并在活动演示者和片段演示者之间进行通信,即: 将数据从活动演示者传递到片段演示者 从片段演示者向活动演示者发送事件 … 但我不知道如何以官方方式做到这一点。 我可以使用BusEvent,但我认为这不是一个好习惯。

Android MVP – 应避免在演示者中使用R.string引用吗?

为了完全将Android SDK与我的演示者类分离,我试图找出避免访问我们通常使用R的资源ID的最佳方法。 我以为我可以创建一个接口来访问像字符串资源这样的东西,但我仍然需要ID来引用字符串。 如果我要做的事…… public class Presenter { private MyView view = …; private MyResources resources = …; public void initializeView() { view.setLabel(resources.getString(LABEL_RES_ID); } } 我仍然必须拥有LABEL_RES_ID ,然后将其映射到我的资源桥中的R.string.label 。 这很酷,因为我可以在用其他东西进行unit testing时将其换掉,但我不想管理另一个到字符串值的映射。 如果我放弃并只使用R.string值,我的演示者将再次绑定到我的视图。 那不理想? 是否有一个更简单的解决方案,人们用来解决这个问题,以使他们远离演示者。 我不想以超出Android提供的方式管理字符串,因为我仍然希望将它们放在布局文件中并获得国际化等的好处。我想做一个可以与这个演示者一起工作的哑unit testing无需Android SDK即可生成R.java文件。 这要问太多了吗?