SQLite
文章平均质量分 85
风_中_云
Android OTA/Framework/APP
展开
-
synchronized 和 beginTransaction 死锁的一个例子
这是一个及其诡异的死锁,很少有人意识到,在Androind中,SQLiteDatabase.beginTransaction的实现里,也要等到SQLiteConnectionPool中此db的primaryConnect可用才行。也就是说,beginTransaction和endTransaction也在某种程序上等同于锁定和解锁,在和synchronized(sLocker)嵌套使用时,同样要考虑死锁的问题。 一般来讲,如果看到SQLiteConnectionPool的很长的超时警告,就要考虑死锁的可能原创 2017-04-22 12:42:32 · 1478 阅读 · 1 评论 -
Whatsapp ANR的一个分析,MediaProvider的 synchronized 和 beginTransaction 死锁导致的奇葩问题
最近收到一个whatsapp ANR的问题,其trace大是这样的:"main" prio=5 tid=1 Blocked | group="main" sCount=1 dsCount=0 obj=0x75543b80 self=0xa5a05400 | sysTid=24292 nice=-10 cgrp=default sched=0/0 handle=0xa8ed0534 |原创 2017-04-24 11:03:12 · 2808 阅读 · 0 评论