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赋值后获取到的是旧

android listview里面能嵌套gridview吗

怎么把查询到的数据 赋值给 ECharts

asp.net如何从数据库读取一个字段的值然后赋值给一个参数