Commits

riddle_hsu authored 57307b21cbd
[ActivityManager] Improve multi-thread access the same provider Application may use many threads to load data from provider. If the target provider needs to start process, each access will occupy one binder thread of system server until the provider process started and published. Sometimes application uses more than 16 threads to access the same provider, and the provider process needs a little long time to start, then all binder threads of system server are waiting. But when the provider is ready, it is unable to publish to notify those waiting threads because no availabe binder thread to use. And device will become almost hang. Improvement: If there is already a thread acquiring provider, let other threads (which try to acquire the same provider) wait the result of the first one. That reduces IPC to save binder thread of system server. Remove calling removeContentProvider in installProvider because we have ensured only get one provider holder for the same provider, the original race that gets a new useless holder will not happen. Change-Id: I521f2603db8ced56912f5dc54342a70451e68381