You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何检测mLevel变量首次升级到特定等级?

等级首次升级检测的实现方案

要检测首次升级到特定等级的情况,核心是记录用户已经解锁过的等级,避免重复触发升级逻辑。以下是修改后的实现代码和关键点说明:

核心思路

  • 新增一个布尔数组mLevelUnlocked,用来跟踪每个等级是否已经解锁(因为等级范围固定为1-10,数组查询效率更高)。
  • 在更新经验后自动计算等级,对比新旧等级,只有当新等级更高且未被解锁时,才触发首次升级逻辑,并标记该等级为已解锁。

修改后的完整代码

public class UserModel {
    private static int mExperience;
    private static int mLevel;
    // 索引0闲置,索引1-10对应等级1-10,记录是否已解锁
    private static boolean[] mLevelUnlocked = new boolean[11]; 

    public int getExperience() {
        return mExperience;
    }

    public void setExperience(int experience) {
        mExperience = experience;
        // 设置经验后自动计算等级,保证经验与等级同步
        calculateLevel(experience);
    }

    public int getLevel() {
        return mLevel;
    }

    private void calculateLevel(int experience) {
        int newLevel;
        if(experience < 80){
            newLevel = 1;
        }else if(experience >= 80 && experience <270){
            newLevel = 2;
        }else if(experience >= 270 && experience <640){
            newLevel = 3;
        } else if(experience >= 640 && experience <1250){
            newLevel = 4;
        }else if(experience >= 1250 && experience <2160){
            newLevel = 5;
        }else if(experience >= 2160 && experience <3430){
            newLevel = 6;
        }else if(experience >= 3430 && experience <5120){
            newLevel = 7;
        }else if(experience >= 5120 && experience <7290){
            newLevel = 8;
        }else if(experience >= 7290 && experience <10000){
            newLevel = 9;
        }else{
            newLevel = 10;
        }

        // 仅当等级提升且该等级未解锁时,触发首次升级逻辑
        if (newLevel > mLevel && !mLevelUnlocked[newLevel]) {
            mLevelUnlocked[newLevel] = true;
            mLevel = newLevel;
            // 这里执行首次升级的业务逻辑,比如发奖励、弹提示
            onFirstLevelUp(newLevel);
        } else {
            // 等级未提升或已解锁,直接更新等级
            mLevel = newLevel;
        }
    }

    // 首次升级回调,可根据需求调整逻辑
    private void onFirstLevelUp(int level) {
        System.out.println("首次升级到等级" + level);
        // 示例:添加奖励发放、UI通知等逻辑
    }
}

关键细节

  • 自动同步经验与等级:把等级计算逻辑放到setExperience里自动执行,避免外部手动调用导致经验和等级不一致。
  • 避免重复触发:通过mLevelUnlocked标记已解锁的等级,确保每个等级的首次升级逻辑只会执行一次。
  • 持久化处理:如果需要重启App后保留已解锁等级的记录,要把mLevelUnlocked的数据保存到本地存储(如SharedPreferences、SQLite)。

内容的提问来源于stack exchange,提问作者LuCC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 07:40:38