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

时间:2011-06-30 11:39:34

标签: android gps

我遇到问题我在哪里使用

注册位置更新
 mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_MS, 1, mSingleShotGpsListener);

我可以看到联系人数据库已更新,我希望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

1 个答案:

答案 0 :(得分:2)

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

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

您可以使用“adb shell dumpsys location”查看为被动位置更新注册的应用。