我正在做api22的安卓APP。
它有一个负责接收消息的服务,当它有,它通过基本处理程序告诉活动,因此活动可以刷新UI。
包括:
我测试过:
所以,出了什么问题?我还能做什么?
注意:它作为服务工作,所以我认为所有活页夹的东西都没问题,并且没有发布。 到目前为止只有一个问题是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();
}
}
}
}