android ui只在处理程序中刷新一次

时间:2017-03-17 14:46:18

标签: android android-service android-handler

我正在做api22的安卓APP。

它有一个负责接收消息的服务,当它有,它通过基本处理程序告诉活动,因此活动可以刷新UI。

包括:

  1. 更改按钮文字
  2. 如果按钮可点击则更改
  3. 我测试过:

    1. 每次我第一次打开APP时,一切都很好。
    2. 保持APP打开,将一个活动支持到主活动,然后像第一次一样打开该活动。 Log告诉我,活动收到了msg服务发送,debuger告诉我刷新UI执行的代码,但仍然没有任何变化。
    3. 我已经做了很多时间的测试,而且它也是一样的。
    4. 所以,出了什么问题?我还能做什么?

      注意:它作为服务工作,所以我认为所有活页夹的东西都没问题,并且没有发布。 到目前为止只有一个问题是UI更新。

      服务代码:

      private void sendToken(String token,String ip,String port) {
          // zmq
          ZMQ.Socket mRequest = zcontext.socket(ZMQ.REQ);
          // bind address
      
          mRequest.connect("tcp://"+ip+":"+port);
      
          // send data.
          Log.d(TAG, "token Connected! Sending data...");
          Log.d(TAG, "token tcp://"+ip+":"+port);
      
          mRequest.send(token, 0);
          Log.d(TAG, "token All data sent!");
      
          String tokenback = mRequest.recvStr();
          mRequest.close();
          Handler h = Unlock.handler;
          String strtokenback[] = tokenback.split(",");
          Log.d(TAG, "----"+strtokenback[0]+"---"+strtokenback[1]+"---"+tokenback);
          if(strtokenback[1].equals(token))
          {
              if(strtokenback[0].equals("Y"))
              {
                  Message msg = new Message();
                  msg.what = 1;
                  Log.d(TAG, "token yes");
                  h.sendMessage(msg);
      
              }
              else
              {
                  Message msg = new Message();
                  msg.what = 0;
                  h.sendMessage(msg);
              }
          }
      }
      

      处理程序代码:

      Class Unlock{
      public static MyHandler handler;
      
      onCreate{
          handler = new MyHandler();
          btn_confirm = (Button) findViewById(R.id.btn_unlockconfirm);
      
      }
      
      class MyHandler extends Handler {
      
          @RequiresApi(api = Build.VERSION_CODES.KITKAT)
          @Override
          public void handleMessage(Message msg) {
              if (msg.what == 1) {
                  //成功
                  iftokenright = true;
                  btn_confirm.setText("确定");
                  btn_confirm.setClickable(true);
      
                  Toast.makeText(Unlock.this,
                          "SSSSSSS",
                          Toast.LENGTH_SHORT).show();
                  trytimes = 5;
                  //refresh();
              } else if(msg.what == 0) {
                  if((trytimes--)>0)
                  {
                      String note = "错误的token,您还有"+String.valueOf(trytimes)+"次机会";
                      Toast.makeText(Unlock.this,
                              note,
                              Toast.LENGTH_SHORT).show();
                      iftokenright = false;
                      finish();
                  }
                  else
                  {
                      String note = "很抱歉,您总是输错token,我们建议5分钟后再尝试";
                      Toast.makeText(Unlock.this,
                              note,
                              Toast.LENGTH_SHORT).show();
                      Unlock.this.finish();
                      finish();
                  }
              }
              if(msg.what == 2&&iftokenright==false)
              {
                  String note = "当前网络不通,您还有"+String.valueOf(trytimes)+"次机会";
                  Toast.makeText(Unlock.this,
                          note,
                          Toast.LENGTH_SHORT).show();
                  Log.d("sendmsg", "Gettttttthismsg2");
                  finish();
      
              }
          }
      
      }
      }
      

0 个答案:

没有答案