对于android和java,我仍然是新手,所以请客气点,我在这里问这个问题之前做了很多研究。
这段代码在一个片段中运行得很好(此时,我不想知道代码可能引起的潜在问题,这些问题将在我继续学习并了解更多有关android的信息时处理)
package com.sample.ui.dashboard;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class ExecThread(String id) {
String RequestA = a_string;
TextView te; //(TextView) getView().findViewById(R.id.meternumber);
Runnable runnable = new Runnable() {
String read = null;
int count = 5;
@Override
public void run()
{
try {
while(count != 0)
{
Socket socket = new Socket(ipAddress, port);
socket.setKeepAlive(true);
OutputStream out = socket.getOutputStream();
PrintWriter output = new PrintWriter(out, true);
output.println(RequestA);
BufferedReader input;
input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
read = input.readLine();
if (read != null && read.length() >= 250)
{
te.setText( String.valueOf(count) + " - " + (CharSequence) read.substring(4, 16));
}
socket.close();
count--;
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
};
Thread thread = new Thread(runnable);
thread.start(); <<--------------- cannot resolve symbol 'start'
}在按钮的onClick()中,代码工作正常,这是在测试使用修改的modbus协议读取设备,因为对设备的轮询是一个24小时的操作,所以不能在主UI中完成,因为它将涉及提取大量数据值和数据库活动到Sqlite
我的问题是,我遗漏了什么
希望这是有意义的
提前谢谢..。
发布于 2022-10-02 01:53:00
由于@tgdavies指出了我的遗漏,我的线程正在运行。
线程对象的Java类实现。
public class myThread
{
public void ExecThread(String requestA, String requestB, TextView tv ) {
TextView te = tv;
Runnable runnable = new Runnable() {
String read = null;
int count = 5;
@Override
public void run()
{
try {
while(count != 0)
{
Socket socket = new Socket(ip, port);
socket.setKeepAlive(true);
OutputStream out = socket.getOutputStream();
PrintWriter output = new PrintWriter(out, true);
output.println(requestA);
BufferedReader input;
input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
read = input.readLine();
if (read != null && read.length() >= 250)
{
te.setText( String.valueOf(count) + " - " + (CharSequence) read.substring(4, 16));
}
socket.close();
count--;
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}从我的片段onViewCreated( .)
public void onViewCreated(@NonNull View view, Bundle savedInstantState)
{
super.onViewCreated(view, savedInstantState);
myThread h = new myThread();
binding.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v )
{
TextView te = (TextView) getView().findViewById(R.id.mNumber);
h.ExecThread(r1, r2, te);
}
});在这一点上,我很乐意接受更有经验的android开发人员所能看到的问题的建议--我毫不怀疑这可以做得更好--任何反馈都会受到赞赏。
https://stackoverflow.com/questions/73922579
复制相似问题