android - 我认为线程没有正确终止

标签 android java-threads

public String newUser = "false";
public double lat = 0.0, lon = 0.0;

我的 android 应用程序中有以下函数(单击按钮时调用)启动线程:

public void SignUpFunction(View view) {
    assignValues();
    String filledAll = checkIfFilled();
    if (filledAll.equals("true")) {
    Log.d("LIFECYCLE", "calling thread..");

    //my thread
    new validateThread().start();

    Log.d("After thread start","This log call does not occur");

    if (newUser.equals("true")) {
        Toast.makeText(this, "Please wait as we obtain your location", Toast.LENGTH_SHORT).show();
        getMyLocationFunction();
        } else {
            return;
        }
    }
}

验证线程:

class validateThread extends Thread {
    public void run() {
        Log.d("LIFECYCLE", "validateThread entered...");
        try {
                        newUser = "true";
                        Log.d("validateThread", "Validated and found new user");
        } catch (Exception e) {
            Log.d("validateThread", "Exception in validateThread: " + e.getMessage());
        }
    }
}

线程运行正确...但是在最后一行之后,它没有返回到它的开始点。我不明白为什么会这样,因为我以前使用过线程并且它们都可以正常工作。

我知道我可以在线程内提供 getMyLocation 函数,但我真的需要这种方式。

我已经搜索过类似的问题,但没有任何帮助。我在这里做错了什么? 提前致谢。

最佳答案

这是一场比赛。 SignUpFunction 应该等到 validateThread 决定是否设置 newUser = "true"。即使在比赛中,您的代码有时也能正常工作,但那是偶然的。

关于android - 我认为线程没有正确终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31389771/

相关文章:

android - 必须在 notifyItemInserted 之后调用

java - 使用AES算法加密和解密

Java多线程意外结果

java - 无法在多线程中实现同步

Java-特定线程结束后触发操作

java - 在Java中创建另一个任务时取消当前任务并重用同一线程

android - 与服务提供商的通信失败 : No peer certificate in Twitter

android - 反向地理编码停止在 android map 版本 v1 中工作

java - 避免单实例变量在android中被混淆

java - 访问远程应用程序服务器上的线程