Android MVP:如何从演示者写入日志

Android MVP:如何从演示者写入日志,android,mvp,mosby,Android,Mvp,Mosby,我使用MVP模式构建应用程序。这是其中一条规则: 不要在Presenter中使用android库代码 但如果我想从演示者那里记录一些东西呢?我看到的唯一方法是使用System.out.println()但听起来不太好。有什么想法吗?在演示者中不使用Android库代码的原因是,当您编写单元测试时,类中没有对Android代码的依赖,因此它可以直接在JVM上运行 如果您发现自己需要使用Android代码,那么我的做法是将其隐藏在界面后面。这样,您可以在生产代码中使用一个实现,在测试中使用另一个实现

我使用MVP模式构建应用程序。这是其中一条规则:

不要在Presenter中使用android库代码


但如果我想从演示者那里记录一些东西呢?我看到的唯一方法是使用
System.out.println()但听起来不太好。有什么想法吗?

在演示者中不使用Android库代码的原因是,当您编写单元测试时,类中没有对Android代码的依赖,因此它可以直接在JVM上运行

如果您发现自己需要使用Android代码,那么我的做法是将其隐藏在界面后面。这样,您可以在生产代码中使用一个实现,在测试中使用另一个实现

因此,创建一个名为Logger的接口:

public interface Logger {

    void logd(String tag, String message);
}
然后,对于生产代码,您可以使用:

public class LoggerImpl implements Logger {

    public void logd(String tag, String message) {

        Log.d(tag, message);
    }
}
但在运行测试时,可以使用另一个实现:

public class LoggerTestImpl implements Logger {

    public void logd(String tag, String message) {

        System.out.println(tag + " " + message);
    }
}
将记录器依赖项添加到演示者的构造函数中。在运行时给它一个LoggerImpl,在测试期间给它一个LoggerTestImpl


作为一个旁观者,你可以首先考虑你是否真的需要从你的演示者那里做大量的日志记录。AndroidStudio允许您设置断点,这些断点不会挂起代码,并在遇到断点时将消息记录到调试控制台。当然,这取决于您的需求。

如果您包含使用Android.util.Log方法的第三方库/外部代码,该怎么办?