作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在我的应用程序中有一个 TCP 客户端 在开始时它向服务器询问一个号码,现在它工作正常但问题是当我必须再次打开连接并询问 number 次 server 之前发送的其他数据。我的意思是我正在尝试创建一个 for 循环,它将向服务器请求 X 次数据并将它们放入 RecyclerView.Adapter 但现在 For Cycle 进入无限循环而不会在 < strong>X 次。
因此,如果我启动我的应用程序并且它从服务器接收到数字 5,我将在收到它后向服务器询问第一个数字的详细信息,我将要求第二个数字的详细信息和合作。
public static class ConnectTask extends AsyncTask<String, String, Client> {
@Override
protected Client doInBackground(String... message) {
client = new Client(new Client.OnMessageReceived() {
@Override
public void messageReceived(String message) {
publishProgress(message);
}
});
client.run();
return null;
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
if(MainActivity.active){
msgServer.setTextColor(Color.parseColor("#00FF00"));
msgServer.setText("ONLINE");
SelfNumber = values[0];
}
if(help.active){
for(int i=0; i< Integer.valueOf(SelfNumber); i++){
StringTokenizer stringTokenizer = new StringTokenizer(String.valueOf(values[0]),"#");
status = stringTokenizer.nextToken();
receipt = stringTokenizer.nextToken();
eur = stringTokenizer.nextToken();
help.adapter = new SelfAdapter(("CASSA SELF N°" + Integer.toString(i+1)),"EUR: " + eur,"SC: " + receipt,help.img);
help.selfList.add(help.adapter);
help.adapterView.notifyDataSetChanged();
startConnection.removeCallbacks(runnableConnection);
startConnection.postDelayed(runnableConnection,100);
startCashMessage.removeCallbacks(runnableCashMessage);
startCashMessage.postDelayed(runnableCashMessage,250);
}
}
}
}
static Handler startConnection = new Handler();
static Runnable runnableConnection = new Runnable() {
@Override
public void run() {
new ConnectTask().execute("");
}
};
static Handler startCashMessage = new Handler();
static Runnable runnableCashMessage = new Runnable() {
@Override
public void run() {
if (help.active) {
final Cursor cursor = myDB.fetchData();
if (cursor.moveToFirst()) {
do {
Client.SERVER_IP = cursor.getString(1);
} while (cursor.moveToNext());
}
if (client != null) {
client.sendMessage("RICEVO DATI CASSA 1");
}
}
}
};
最佳答案
我认为你会从学习使用中受益 RxJava/RxAndroid .
我相信this presentation (和 video link )将帮助您找到解决方案,他提出了类似问题的解决方案。
如果您以前从未使用过 RxJava,也许您应该从他的第一个 presentation 开始和 video .
祝你好运!
关于java - 如何向 x 次 TCP 客户端请求 TCP 服务器数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45320906/
我是一名优秀的程序员,十分优秀!