在尝试确定是否支持特定连接时,我对 CoverageInfo.getCoverageStatus()和 CoverageInfo.isCoverageSufficient()之间的区别进行了总结。例如:
// check mds with getCoverageStatus() and bitwise check
boolean hasMdsCoverage1 = (CoverageInfo.getCoverageStatus() & CoverageInfo.COVERAGE_MDS) == CoverageInfo.COVERAGE_MDS;
// check mds with isCoverageSufficient()
boolean hasMdsCoverage2 = CoverageInfo.isCoverageSufficient(CoverageInfo.COVERAGE_MDS);
两个 hasMdsCoverage1 和 hasMdsCoverage2 似乎都返回相同的结果,但为什么有两种不同的方法呢?有没有他们会返回不同结果的情况?
理想情况下,我想使用 CoverageInfo.isCoverageSufficent(),因为这在代码中看起来更干净,但在我这样做之前,我想确保我不会错过任何 getCoverageStatus()将提供。
注意:我正在使用它来检查通过BIS,MDS,WAP和WAP2协议的有效连接。
答案 0 :(得分:3)
getCoverageStatus()返回 COVERAGE _ 标志*的位掩码,其中isCoverageSufficient()返回一个布尔值如果设备具有coverageType指定的覆盖类型,则返回某个可用路由;否则为假。按照您的方式编码没有区别,但在hasMdsCoverage1中,您有额外的处理使它们等效。在这种情况下,isCoverageSufficient可能更方便,getCoverageStatus在其他情况下可能更方便。如果前者称后者,我不会感到惊讶。许多不同的支持库中有许多这样的例子。