java – 我想在连接到websocket时显示加载动画
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 我想在连接到websocket时显示加载动画,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3232字,纯文字阅读大概需要5分钟。
内容图文
![java – 我想在连接到websocket时显示加载动画](/upload/InfoBanner/zyjiaocheng/779/c3601fe9c8c040b0898187d8dd66ca1b.jpg)
我正在尝试在连接到Web服务器时在我的应用程序中显示动画,这样用户就不会认为它已经崩溃/冻结.
这是代码中可能相关的位:
private void waitForWebSocketConnect() {
long start = System.currentTimeMillis();
long end = start + 3*1000; // 3 seconds
while (!mWebSocketClient.isOpen()) {
try {
Thread.sleep(200);
if(System.currentTimeMillis() >= end){
throw new InterruptedException();
}
} catch (InterruptedException e) {
fatalError("WebSocket did not connect. Please try again.");
}
}
}
我认为这也可能有用:
private void connectWebSocket() {
final Activity faActivity = super.getActivity();
URI uri;
try {
String uriString;
if(isRegistering){
//uriString = "ws://app.touchtechpayments.com:80/reg";
uriString = "wss://ec2-52-16-13-241.eu-west-1.compute.amazonaws.com/reg";
} else {
//uriString = "ws://app.touchtechpayments.com:80/trans";
uriString = "wss://ec2-52-16-13-241.eu-west-1.compute.amazonaws.com/trans";
}
Log.d("uriString", uriString);
uri = new URI(uriString);
} catch (URISyntaxException e) {
e.printStackTrace();
return;
}
mWebSocketClient = new WebSocketClient(uri) {
@Override
public void onOpen(ServerHandshake serverHandshake) {
this.progressBar.setVisibility(View.GONE);
Log.d("Websocket", "Opened");
}
@Override
public void onMessage(String s) {
Log.d("Websocket", "Received message " + s);
if(isRegistering) {
confirmRegistration(s);
} else {
confirmTransaction(s);
}
}
@Override
public void onClose(int i, String s, boolean b) {
Log.d("Websocket", "Closed " + s);
if(!allDone) {
if (triedTwice) {
final String printToast = "Error received: " + s + "\nPlease try again.";
faActivity.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(context, printToast, Toast.LENGTH_LONG).show();
faActivity.getFragmentManager().popBackStack();
}
});
} else {
Log.d("Websocket", "Trying for second time.");
triedTwice = true;
if (lastInputToServer != null) {
setupSSL();
connectWebSocket();
waitForWebSocketConnect();
mWebSocketClient.send(lastInputToServer);
}
}
}
}
@Override
public void one rror(Exception e) {
this.progressBar.setVisibility(View.GONE);
Log.d("Websocket", "Error " + e.getMessage());
}
};
setupSSL();
mProgressBar.setVisibility(View.VISIBLE);
mWebSocketClient.connect();
}
webSocketClient实际上并未在onCreate()中定义,但无论如何上面的方法都在onCreate()中使用.
解决方法:
首先在layout.xml中定义ProgressBar,并使用indeterminate参数启用不确定模式:
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
android:indeterminate = "true"/>
然后在建立websocket连接后立即隐藏progressBar:
public void onCreate(){
[...]
mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
mWebSocketClient = new WebSocketClient(uri) {
@Override
public void onOpen(ServerHandshake serverHandshake){
this.progressBar.setVisibility(View.GONE); // or INVISIBLE
}
@Override
public void onMessage(String s) {
}
@Override
public void onClose(int i, String s, boolean b) {
}
@Override
public void one rror(Exception e) {
this.progressBar.setVisibility(View.GONE); // or INVISIBLE
}
};
mProgressBar.setVisibility(View.VISIBLE);
mWebSocketClient.connect();
}
您还可以将ProgressBar定义为不可见,并在mWebSocketClient.connect()调用之前显示它.
附:我在这个例子中使用这个java websocket库
dependencies {
compile "org.java-websocket:Java-WebSocket:1.3.0"
}
内容总结
以上是互联网集市为您收集整理的java – 我想在连接到websocket时显示加载动画全部内容,希望文章能够帮你解决java – 我想在连接到websocket时显示加载动画所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。