Invalidate()崩溃

时间:2013-05-20 10:51:14

标签: android view invalidation

我正在将数据发送到我希望更改布局的类。我按照以下方式发送数据:

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()非常简单。

如果有人可以帮助我,我会非常感激。

1 个答案:

答案 0 :(得分:1)

请改用postInvalidate()。或者:

runOnUiThread(new Runnable () {
@Override
public void run() {
    invalidate(view)
}
});