程序中出现的问题总结

来源:互联网 发布:java开发就业前景 编辑:程序博客网 时间:2024/05/16 15:43

蓝牙部分问题

一、使用一个接口类时,对一个活动设置监听时,在适当的地方调用监听的覆写方法时,在调用监听覆写方法的这个类中需要定义一个用Static修饰的监听类,来接收需要监听的活动。

public interfaceDataFromClientListener {void getDataFromClient(String data);}

@Overridepublic void getDataFromClient(String data0) {      final String data = data0;    this.runOnUiThread(new Runnable() {        @Override        public void run() {            StringBuffer buffer = new StringBuffer();            buffer.append(data + "\n");            receiveData.setText(buffer.toString());        }    });}
private static DataFromClientListener mListener;//在需要定义一个用Static修饰的监听类,来接收需要监听的活动
二、当使用到主线程中的view来更新UI操作时,一定要回到主线程中进行UI操作,否则会出现:

 android.view.ViewRoot$CalledFromWrongThreadException异常

解决方法:
1、利用activity.runonuithread(runnable)

  把更新ui的代码创建在runnable中,然后在需要更新ui时,把这个runnable对象传给activity.runonuithread(runnable)。 这样runnable对像就能在ui程序中被调用。

@Override      public void getDataFromClient(String data0) {      final String data = data0;    this.runOnUiThread(new Runnable() {       @Override        public void run() {            StringBuffer buffer = new StringBuffer();          buffer.append(data + "\n");           receiveData.setText(buffer.toString());       }     });}
2、在活动的oncreate(bundle savedinstancestate)中创建一个handler类的实例, 在这个handler实例的han  dlemessage回调函数中调用更新界面显示的函数
public class ExampleActivity extends Activity {      Handler h = null;      @override      public void onCreate(Bundle savedinstancestate){          h = new Handler(){              @override              public void handleMessage(Message msg){                  // 写入需要更新主线程中哪一个view视图              }          };      }  }