切換系統語音環境,進入聯繫人出現聯繫人無響應問題

Android切換系統語音環境後立即進入聯繫人,如果聯繫人較多,容易出現無響應問題,原因是:

剛切換語音時,聯繫人數據庫正在更新,這時進入通訊錄時要查詢加載聯繫人,必須等聯繫人數據庫更新完後才能查詢,出現響應不及時。

流程如下:

ContactsProvider2.java的onConfigurationChanged() ---->initForDefaultLocale() , verifyLocale()--->在  verifyLocale()開啓了AsyncTask,後臺做mDbHelper.setLocale(ContactsProvider2.this, currentLocale)---->在setLocale()(Regenerates all locale-sensitive data:nickname_lookup, name_lookup and sort )中刪除更新了一些數據,

 db.execSQL("DROP INDEX raw_contact_sort_key1_index");

db.execSQL("DROP INDEX raw_contact_sort_key2_index");

db.execSQL("DROP INDEX IF EXISTS name_lookup_index");

loadNicknameLookupTable(db);//Loads common nickname mappings into the database.

insertNameLookup(db);

rebuildSortKeys(db, provider);

createContactsIndexes(db);

這時進入聯繫人,會查詢聯繫人,而前面的正在更新數據庫,未釋放鎖,響應不及時


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章