我正在将数据发送到我希望更改布局的类。我按照以下方式发送数据:
while(connected){
//receive data through socket
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while ( (line = in.readLine()) != null){
String [] aarray = line.split("[^\\d]+");
if (aarray != null){
for(int i = 0; i < aarray.length; i++){
number = Integer.parseInt(aarray[i]);
}
}
Log.d(TAG, "Line " + String.valueOf(line));
myCompassView.updateDirection(number);
updateDirection调用以下函数:
public void updateDirection(float dir){
direction = dir;
Log.d(main.TAG, "mudou direction " + String.valueOf(direction));
invalidate();
}
我希望这个invalidade()再次调用onDraw(Canvas画布)函数,但它会使应用程序崩溃。
我不明白这个问题,虽然invalidate()非常简单。
如果有人可以帮助我,我会非常感激。
答案 0 :(得分:1)
请改用postInvalidate()
。或者:
runOnUiThread(new Runnable () {
@Override
public void run() {
invalidate(view)
}
});