android - 方法在方法调用中返回 false,但实际上在 Android 应用程序中向被调用者返回 true

标签 android multithreading android-studio

所以我知道我应该发布代码,但我的代码相当复杂,我认为这没有帮助。

这个方法:

public boolean placePlayer(Player player, int startingX, int startingY)
{
    if(checkNotOnBoard(startingX, startingY))
        return false;
    player.setStartingPosition(startingX, startingY);
    placeStartingTile(startingX, startingY);
    return true;
}

调用 checkNotOnBoard(),即:

private boolean checkNotOnBoard(int positionX, int positionY)
{
    if(_board.length < 1)
        return true;
    if(positionX < 0 || positionY < 0)
        return true;
    if((positionX < _board.length) && (positionY < _board[0].length))
        return true;
    return false;
}

我在if(checkNotOnBoard(startingX,startingY))处设置了调试断点,单步执行该方法,它走到了该方法的最后一行(返回false),当它返回到placePlayer时,返回是true ,并将 placePlayer 移至 return false 行。 我唯一的理论是 _board 正在被重置,但据我所知,没有其他线程正在运行这部分代码。这是一款 Android 应用,我正在使用 Android Studio 在 HTC One M8 设备和 Nexus 7 上进行调试。

最佳答案

执行返回时,调试器始终会命中方法的最后一行。它实际上并不意味着最后一条语句被执行。可能发生的情况是 java 引擎将返回地址从最后一行的堆栈中弹出。

关于android - 方法在方法调用中返回 false,但实际上在 Android 应用程序中向被调用者返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26857190/

相关文章:

android - 在 Android 的 ListView 中为每个项目设置标签?

multithreading - 线程是否可以访问同一进程的其他线程的堆栈?

c++ - 多线程:写入后先从另一个线程访问...我需要volatile吗?

node.js - 我可以在 React Native 中使用 Worker 类吗?

java - 安卓3.3.0更新,错误: Cause: invalid type code: 68

android - notifyDataSetChanged() 不刷新适配器

android - 如何编写自定义View的set方法

Android Studio 操作栏颜色未更改

git - 在 Android Studio 导入期间维护目录结构

Android Studio 定期停止生成 ButterKnife 绑定(bind),直到重建