1

特定の接続がサポートされているかどうかを判断しようとして、 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);

hasMdsCoverage1hasMdsCoverage2はどちらも同じ結果を返すように見えますが、なぜ 2 つの異なるアプローチがあるのでしょうか? 別の結果を返す場合はありますか?

理想的には、 CoverageInfo.isCoverageSufficent()を使用したいと考えています。これは、コードがよりきれいに見えるためですが、そうする前に、 getCoverageStatus()が提供するものを見逃していないことを確認したいと考えています。

注: これを使用して、BIS、MDS、WAP、および WAP2 プロトコルを介した有効な接続を確認しています。

4

1 に答える 1

3

getCoverageStatus() は、COVERAGE_ flags*のビットマスクを返します。ここで、isCoverageSufficient() は、利用可能なルート上で、coverageType によって指定されたタイプのカバレッジがデバイスにある場合、ブール値の trueを返します。それ以外の場合は false。あなたが持っている方法でコーディングした場合、違いはありませんが、 hasMdsCoverage1 では、それらを同等にする追加の処理があります。この場合は isCoverageSufficient の方が便利かもしれませんし、他の場合は getCoverageStatus の方が便利かもしれません。前者が後者を呼び出しても、私は驚かないでしょう。このような例は、さまざまなサポート ライブラリに多数あります。

于 2009-11-17T14:35:43.250 に答える