开发学院手机开发Android 开发 Android2.1源码中的一个bug 阅读

Android2.1源码中的一个bug

 2010-10-14 06:16:00 来源:本站整理   
核心提示:Looper.prepare();android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_FOREGROUND);ActivityManagerService m = new ActivityManagerService();syn

Looper.prepare();

android.os.Process.setThreadPriority(

android.os.Process.THREAD_PRIORITY_FOREGROUND);

ActivityManagerService m = new ActivityManagerService();

synchronized (this) {

mService = m;

notifyAll();

}

try {

sleep(1000);

} catch (InterruptedException e) { }

synchronized (this) {

while (!mReady) {

try {

wait();

} catch (InterruptedException e) {

}

}

}

Looper.loop();

当然,理论上来讲这样改也不能完全避免问题,只是暂时避免了问题而已。如果想彻底解决问题需要重新设计,还是让谷歌来做吧。

通过这个bug分析,我们以后进行多线程编程的时候一定要注意。线程A等待线程B的通知,在线程B中通知A之后,千万不要再等待线程A的通知,否则容易出现问题。上面Android的代码就是很不好的例子,大家引以为戒。

上一页  6 7 8 9 10 11 

Tags:Android 源码 一个

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接