如何知道两个条件何时成立

时间:2017-03-29 11:40:03

标签: java android synchronization boolean atomic

我有一个应用程序通过wifi直接与另一部手机(使用相同的应用程序)通信,并且两个手机都必须与bluetooh网桥建立连接。当两个设备都有蓝牙连接时,我想启动倒数计时器。

我的问题。

我正在使用两个布尔值:

    private final AtomicBoolean cnoadv = new AtomicBoolean(false);//represents the other user connection
    boolean conexao = false ;// represents my connection 

当我的连接完成时,boolean是" conexao"是的,我启动了方法" verificar"为了验证两个连接并发送" pronto"给其他用户以便他知道我已经连接:

 conexao = true; 
 verificar();
 chatManager.write("pronto".getBytes());

在其他用户端,当我收到消息" pronto"布尔" cnoadv"表示其他用户连接变为true并且还启动方法" verificar"

public void pushMessage(String readMessage) {
    if(readMessage.equals("pronto")){

        Log.d("recebido", "pronto");

        cnoadv.getAndSet(true);

            verificar();

        }

我验证两个连接的verificar()方法:

public void verificar() {

    if (  cnoadv && conexao) { // error here saying i cant use "&&" in atomic boolean

        Toast.makeText(getActivity().getApplicationContext(), "both connections done", Toast.LENGTH_SHORT).show();

}}

我的问题:在我的" verificar()"验证两个连接的方法我想检查两个布尔值是否都为真。我该怎么做呢 ?我以错误的方式进行此验证?由于我没有经验,我会给出一个很好但很简单的解释,非常感谢你。

1 个答案:

答案 0 :(得分:1)

你应该使用简单的布尔值来使用&&,所以试试:

public void verificar() {

    if (  cnoadv.get() && conexao) { // error here saying i cant use "&&" in atomic boolean

        Toast.makeText(getActivity().getApplicationContext(), "both connections done", Toast.LENGTH_SHORT).show();

}}