gpt4 book ai didi

java - Presenter应该了解Android MVP架构中的Activity吗?

转载 作者:行者123 更新时间:2023-12-02 13:08:25 25 4
gpt4 key购买 nike

我想知道在使用 Android MVP 架构时是否应该在 Presenter 代码中引用 Activity

到目前为止,我发现的示例 MVP 架构并未引用它,但在我的代码中,它不是 Presenter 上的属性,而是某些方法中的参数。这会导致问题吗?这不是遵循Android MVP吗?

以下是来自一位演示者的代码示例:

package com.example.example;

import android.net.Uri;
import android.support.v4.app.FragmentActivity;
import android.support.v4.content.FileProvider;

import com.example.example.util.Constants;
import com.example.example.util.ImageFile;

import java.io.IOException;

/**
* Presenter from home screen, (Main), of the app
*/
public class MainPresenter implements MainContract.Presenter {

private final MainContract.View mView;
private final ImageFile mImageFile;

public MainPresenter(MainContract.View mainView, ImageFile imageFile) {
mView = mainView;
mImageFile = imageFile;
}

@Override
public void takePicture(FragmentActivity activity) throws IOException {
mImageFile.create(activity);

Uri photoUri = FileProvider.getUriForFile(
activity,
Constants.FILE_PROVIDER_PATH,
mImageFile.getFile());

mView.openCamera(photoUri);
}

Uri getImageFileUri() {
return mImageFile.getUri();
}
}

最佳答案

在正确的 MVP 实现中,Presenter 不应该知道该 Activity 。如果我们要使用 Activity ,那么我们将不得不在测试期间模拟 Activity ,这将使测试变得困难。因此,在您的情况下,您应该通过 View 引用将 mImageFile 传递给 Activity ,并在 Activity 类中创建 URI。

关于java - Presenter应该了解Android MVP架构中的Activity吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44048503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com