Android Thread中读取到的数据,赋值给一个全局变量,再使用全局变量的时候,第一次为空,怎么保证有数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Thread中读取到的数据,赋值给一个全局变量,再使用全局变量的时候,第一次为空,怎么保证有数据相关的知识,希望对你有一定的参考价值。
public class MainActivity2 extends AppCompatActivity implements View.OnClickListener private Handler mHandler = new Handler() @Override public void handleMessage(Message msg) super.handleMessage(msg); switch (msg.what) case msgKey: tvReceiveData.append(mSb.toString()); tvReceiveData.append("\n"); ; private class ReadThread extends Thread @Override public void run() // TODO Auto-generated method stub super.run(); while (!isInterrupted()) int size; try byte[] buffer = new byte[20]; Log.e(TAG, "----ReadThread start----"); if (mInputStream == null) Log.e(TAG, "----mInputStream=null----"); return; Log.e(TAG, "----read(buffer)----"); size = mInputStream.read(buffer); Log.e(TAG, "----size----" + String.valueOf(size)); if (size > 0) mSb = new StringBuffer(); mSb.append(MyFunc.ByteArrToHex(buffer)); Log.e(TAG, "readresult=" + mSb.toString()); result=mSb.toString(); msg = new Message(); msg.what = msgKey; mHandler.sendMessage(msg); catch (IOException e) Log.e(TAG, "----ReadThread printStackTrace----"); e.printStackTrace(); return; @Override public void onClick(View view) switch (view.getId()) case R.id.btn_open: try mSerialPort = new SerialPort(new File(etComNumber.getText().toString().trim()), 9600,0); mOutputStream = mSerialPort.getOutputStream(); //写 mInputStream = mSerialPort.getInputStream();//读 mThread = new ReadThread(); mThread.start(); tvReceiveData.append("打开串口"+"\n"); catch (IOException e) e.printStackTrace(); break; private String GetSerialNumber() String TX1="0101000000000000000000000000000000007188"; etCommand.setText(TX1); senddata(TX1); if (result!=null) return result; else return "---";
参考技术A 将result的值通过msg和handler传到主线程就可以了 参考技术B 参考java多线程编程的生产者消费者模式例子异步请求的数据,并将数据赋值给全局变量的一些解决方法
参考技术A 第一个解决方法没有使用全局变量,直接在ajax请求中将请求到的数据赋值给需要的地方第二个方法是将请求到的数据,通过方法传参来传递给一个方法,然后再方法中来调用请求到的数据
第三个方法就是将ajax的异步加载改为同步加载
第四个方法
以上是关于Android Thread中读取到的数据,赋值给一个全局变量,再使用全局变量的时候,第一次为空,怎么保证有数据的主要内容,如果未能解决你的问题,请参考以下文章
python 数据库查询到的结果如何能赋值给dataframe并标明列明
react使用textarea给value赋值后获取到的是旧