【Java】按位存储:使用int存储boolean数组

有一种场景,比如App设置页中会有一组开关选项,这个时候保存这些开关的状态,如果每个按钮都对应一个boolean值的话,太大材小用显得鸡肋,频繁读取SharedPreferences 存取效率自然快不过一次读取。


首先,敲定每个boolean值存储的位置

    private int mBroadcastCustomValue = 0;   //用来存储的int值
    public static final int BROADCAST_TYPE_CUSTOM_BASE = 1; 
    public static final int BROADCAST_TYPE_CUSTOM_TRAFFIC = 1 << 1; 
    public static final int BROADCAST_TYPE_CUSTOM_CAMERA = 1 << 2;  
    public static final int BROADCAST_TYPE_CUSTOM_SAFE = 1 << 3;


一、添加Add

private void addLevel(int level){
    mBroadcastCustomValue |= level;    //add
}

//调用方式如下
addLevel(BROADCAST_TYPE_CUSTOM_BASE);


二、删除Delete

private void deleteLevel(int level){
    mBroadcastCustomValue ^= mBroadcastCustomValue & level;     //delete
}

//调用方式如下
deleteLevel(BROADCAST_TYPE_CUSTOM_BASE);


三、读取Read

/**
 * 从value中读取level的设置值,level即是某个boolean值的位置
 */
private boolean isLevelAccess(int value, int level){
    if((value & level) == level){
        return true;
    }
    return false;
}

//调用方式如下
boolean a = isLevelAccess(mBroadcastCustomValue, BROADCAST_TYPE_CUSTOM_BASE);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值