Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does registering for Location updates trigger contacts to be refreshed?

Tags:

android

gps

I am having a problem where is I register for location updates using

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

I can see that the contacts DB is updated, which on my desire Z seems to take a while and then is followed by a load of GC action (see log below). As i displaying some animations quite soon after the location check is triggered this results is sub-optimal performance. Any idea why this is happenening / what i can do to stop it?

I have tested on a Nexus S and do not see this behaviour / performance issue / contact checks in the log.

Thanks for any help!

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
like image 693
Dori Avatar asked Nov 05 '22 19:11

Dori


1 Answers

Registering for the update causes the GPS to come up and report a location. Most likely on that device there is a passive location receiver registered for some reason that when getting the update due to you causing the GPS location to be fetched and reported is doing some operation on the contacts database.

Given that you don't see this behavior on the Nexus device, it is not part of stock Android. So it is some customization the manufacturer has done to the device, or some other app installed on that device.

You can see what apps are registered for passive location updates with "adb shell dumpsys location".

like image 116
hackbod Avatar answered Nov 14 '22 21:11

hackbod