异常出现频率:非必现,乍看不可捉摸。
BUG导致:应用程序崩溃,过一小会儿会自动退出。
Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)
遇到这个问题很无奈,但是经过不断探索终于找到了问题的原因!!!
这个问题非常不给面子,居然在给上级演示程序的时候突然崩坏! 哭哭哭!!!NND看老子一会儿怎么治你!!!
这个是典型的多线程引起的问题,
我当时的应用场景是:
SurfaceView里面有一个Bitmap成员变量
而我们都知道SurfaceView里面的绘图方法是在一个新开的线程里面执行的,在这个绘图方法里,会执行把Bitmap绘制到Canvas上面的操作
当我点击一个按钮的时候,可能会改变Bitmap的引用,指向另外一张处理完成的图片,这个时候Bitmap这个成员变量会被我recycle(),释放掉。
问题就在这里了,我在recycle这个Bitmap的时候,也许Thread中正在执行把Bitmap绘制到Canvas上的操作,