2017-08-11 60 views
-2

我不明白为什么:如何使用Android服务标志?

if((flags & (Service.START_FLAG_REDELIVERY |Service.START_FLAG_RETRY) != 0) 
    // 2 flags are present. 

因为:

if((flags & (Service.START_FLAG_REDELIVERY |Service.START_FLAG_RETRY) != 0) 
    //it means that at least one of the 2 is present. 

假设标志= XY:

if((flags & (Service.START_FLAG_REDELIVERY |Service.START_FLAG_RETRY) != 0) 
    //means that X!=0 or Y!=0 not X!=0 and Y!=0. 

回答

-1

它的二进制标志,你需要二进制运算符(|)到连接它,而不是逻辑运算符。

-1

public static final int START_FLAG_REDELIVERY = 1; public static final int START_FLAG_RETRY = 2;

0x01 | 0x02 ==> 0x03 ==>二进制00000011 ===> &标记