为什么注册位置更新会触发刷新联系人



我在哪里使用注册位置更新时遇到问题

 mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_MS, 1, mSingleShotGpsListener);

我可以看到联系人DB被更新了,根据我的愿望,Z似乎需要一段时间,然后是大量的GC操作(见下面的日志(。由于我在触发位置检查后很快就显示了一些动画,因此这是次优性能。知道为什么会发生这种事/我能做些什么来阻止它吗?

我在Nexus S上进行了测试,在日志中没有看到这种行为/性能问题/联系检查。

谢谢你的帮助!

06-30 12:33:18.921: DEBUG/GTalkService(14241): [RosterMgr] roster not modified
06-30 12:33:19.041: DEBUG/GTalkService(14241): [OtrMgr] OTR not modified
06-30 12:33:19.081: DEBUG/ContactMessageStore(1501): createTempContactTable() <<<
06-30 12:33:19.101: DEBUG/dalvikvm(17700): GC_FOR_MALLOC freed 1116 objects / 68784 bytes in 106ms
06-30 12:33:19.201: DEBUG/ContactMessageStore(1501): Begin Establish ContactMap
06-30 12:33:19.431: INFO/Resources(17688): Loaded time zone names for en_US in 1438ms.
06-30 12:33:19.531: INFO/global(17688): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
06-30 12:33:19.541: INFO/Resources(17700): Loaded time zone names for en_US in 1528ms.
06-30 12:33:19.561: INFO/Resources(17700): Loaded time zone names for en_US in 1586ms.
06-30 12:33:19.571: INFO/global(17700): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
06-30 12:33:19.581: INFO/global(17700): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
06-30 12:33:19.901: INFO/global(17700): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
06-30 12:33:20.011: DEBUG/ContactMessageStore(1501): cursor count>881
06-30 12:33:20.161: DEBUG/ContactMessageStore(1501): query people time: 959
06-30 12:33:20.181: DEBUG/ContactMessageStore(1501): End Establish ContactMap
06-30 12:33:20.201: DEBUG/ContactNameCache(1671): Contactname cache Process invalid
06-30 12:33:20.211: DEBUG/ContactNameCache(1671): MEPHOTO QUERY
06-30 12:33:20.291: DEBUG/ContactMessageStore(1501): insert contacts2 cost time >>>85
06-30 12:33:20.291: DEBUG/ContactMessageStore(1501): replaceContactTable() >>>
06-30 12:33:20.291: DEBUG/ContactMessageStore(1501): refreshContactsView() >>>
06-30 12:33:20.291: DEBUG/ContactMessageStore(1501): refreshContactsView() <<<
06-30 12:33:20.321: DEBUG/ContactMessageStore(1501): refreshContactsView time: 25
06-30 12:33:20.321: DEBUG/ContactMessageStore(1501): replaceContactTable() <<<
06-30 12:33:20.321: DEBUG/ContactMessageStore(1501): notify MmsSms
06-30 12:33:20.321: DEBUG/ContactMessageStore(1501): MSG_UPDATE_CONTACTS_TABLE <<
06-30 12:33:20.401: DEBUG/ContactNameCache(1671): NAMECACHE MULTIPLE QUERY
06-30 12:33:20.401: INFO/ContactNameCache(1671): cache invalidate.
06-30 12:33:20.861: DEBUG/dalvikvm(1301): GC_EXPLICIT freed 32831 objects / 1957472 bytes in 433ms
06-30 12:33:22.571: DEBUG/dalvikvm(1671): GC_EXPLICIT freed 5100 objects / 233264 bytes in 160ms
06-30 12:33:23.491: DEBUG/dalvikvm(1506): GC_FOR_MALLOC freed 6046 objects / 287856 bytes in 198ms
06-30 12:33:23.571: DEBUG/dalvikvm(1501): GC_EXPLICIT freed 13021 objects / 575784 bytes in 247ms
06-30 12:33:26.611: DEBUG/dalvikvm(1671): GC_EXPLICIT freed 4605 objects / 211320 bytes in 225ms
06-30 12:33:28.131: DEBUG/dalvikvm(1501): GC_EXPLICIT freed 2110 objects / 82232 bytes in 54ms
06-30 12:33:28.451: DEBUG/ContactNameCache(1671): mCachedPhoto size: 68
06-30 12:33:28.491: DEBUG/ContactNameCache(1671): reqeust terminate> Thread[Thread-328,1,main]
06-30 12:33:28.501: DEBUG/ContactNameCache(1671): updateThreadtableNameField> Thread[Thread-329,1,main]
06-30 12:33:28.981: DEBUG/ContactNameCache(1671): thread has terminated> Thread[Thread-329,1,main]
06-30 12:33:29.651: DEBUG/PowerManagerService(1301): New lightsensor value:160, lcdValue:143
06-30 12:33:29.651: DEBUG/PowerManagerService(1301): lightSensorChangedLocked, buttonValue >= 0, mPowerState = 3
06-30 12:33:30.961: DEBUG/ContactMessageStore(1501): MSG_UPDATE_CONTACTS_TABLE >>
06-30 12:33:30.961: DEBUG/ContactMessageStore(1501): query thread cost time >>>0
06-30 12:33:30.961: DEBUG/ContactMessageStore(1501): createTempContactTable() >>>
06-30 12:33:31.151: DEBUG/ContactMessageStore(1501): createTempContactTable() <<<
06-30 12:33:31.201: DEBUG/ContactMessageStore(1501): Begin Establish ContactMap
06-30 12:33:31.381: DEBUG/ContactMessageStore(1501): cursor count>881
06-30 12:33:31.461: DEBUG/ContactMessageStore(1501): query people time: 255
06-30 12:33:31.591: DEBUG/ContactMessageStore(1501): End Establish ContactMap
06-30 12:33:31.601: DEBUG/ContactNameCache(1671): Contactname cache Process invalid
06-30 12:33:31.601: DEBUG/ContactNameCache(1671): MEPHOTO QUERY
06-30 12:33:31.731: DEBUG/ContactMessageStore(1501): insert contacts2 cost time >>>60
06-30 12:33:31.731: DEBUG/ContactMessageStore(1501): replaceContactTable() >>>
06-30 12:33:31.731: DEBUG/ContactMessageStore(1501): refreshContactsView() >>>
06-30 12:33:31.791: DEBUG/ContactMessageStore(1501): refreshContactsView() <<<
06-30 12:33:31.831: DEBUG/ContactMessageStore(1501): refreshContactsView time: 99
06-30 12:33:31.831: DEBUG/ContactMessageStore(1501): replaceContactTable() <<<
06-30 12:33:31.831: DEBUG/ContactMessageStore(1501): notify MmsSms
06-30 12:33:31.831: DEBUG/ContactMessageStore(1501): MSG_UPDATE_CONTACTS_TABLE <<
06-30 12:33:31.891: DEBUG/ContactNameCache(1671): NAMECACHE MULTIPLE QUERY
06-30 12:33:31.891: INFO/ContactNameCache(1671): cache invalidate.
06-30 12:33:32.431: DEBUG/dalvikvm(1301): GC_EXPLICIT freed 12212 objects / 539888 bytes in 520ms
06-30 12:33:32.731: DEBUG/dalvikvm(30218): GC_EXPLICIT freed 444 objects / 22832 bytes in 271ms

注册更新会导致GPS出现并报告位置。很可能在该设备上注册了一个被动定位接收器,原因是在获取更新时,由于您导致GPS位置被提取和报告,正在对联系人数据库进行一些操作。

考虑到你在Nexus设备上看不到这种行为,它不是Android的一部分。因此,这是制造商对该设备或该设备上安装的其他应用程序进行的一些定制。

你可以通过"adb shell dumpsys location"查看哪些应用程序注册了被动位置更新。

最新更新