1

En essayant de déterminer si une connexion spécifique est prise en charge, je suis cofused sur la différence entre CoverageInfo.getCoverageStatus() et CoverageInfo.isCoverageSufficient(). Par exemple:CoverageInfo.getCoverageStatus() vs CoverageInfo.isCoverageSufficient(), sont-ils identiques?

// 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); 

Les deux hasMdsCoverage1 et hasMdsCoverage2 semblent le même résultat, mais pourquoi deux approches différentes? Y a-t-il un cas où ils vont retourner un résultat différent?

Idéalement, je voudrais utiliser CoverageInfo.isCoverageSufficent() car cela semble plus propre dans le code, mais avant que je le fais, je veux vous assurer que je ne suis pas manquer sur tout ce qui getCoverageStatus() serait fournir. REMARQUE: J'utilise cette fonction pour vérifier les connexions valides via les protocoles BIS, MDS, WAP et WAP2.

Répondre

3

getCoverageStatus() retourne un masque de bits drapeaux COVERAGE_ *, où isCoverageSufficient() renvoie une valeur booléenne vrai si le dispositif possède le type de couverture spécifiée par coverageType, sur une certaine voie disponible; sinon faux. Lorsque codé comme vous l'avez il n'y a pas de différence, mais dans hasMdsCoverage1 vous avez un traitement supplémentaire qui les rend équivalents. isCoverageSufficient peut être plus pratique dans ce cas, getCoverageStatus peut être plus pratique dans d'autres. Je ne serais pas surpris si le premier appelle le dernier. Il existe de nombreux exemples de ce type dans de nombreuses bibliothèques de support.

Questions connexes