주 활동에 포함 된 검색 제안에 문제가 있습니다. 때로는 제안이 첫 번째 애플리케이션 실행 (예 : 신규 사용자)에 표시되지 않고 다시 열릴 때 모든 것이 올바르게 작동합니다.첫 번째 실행시 제안 검색이 작동하지 않습니다.
처음 실행하는 동안 콘텐츠 공급자 쿼리가 트리거되지 않는 경우가 있습니다. 그 이유는 searchManager.getSearchableInfo(getComponentName());
이 때때로 null을 반환하기 때문입니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
mSearchView = (SearchView) findViewById(R.id.searchView);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchableInfo searchableInfo = searchManager.getSearchableInfo(getComponentName());
if(searchableInfo != null){
setSearchableInfo(mSearchView, searchableInfo);
} else {
Log.d("Problem", "searchableInfo null");
handle.postDelayed(waitAndRetry, 10000);
}
}
지연 후 다시 searchableInfo를 확인하여 수정했습니다.
Runnable waitAndRetry = new Runnable() {
@Override
public void run() {
Log.d("Problem", "retry after second");
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchableInfo searchableInfo = searchManager.getSearchableInfo(getComponentName());
setSearchableInfo(mSearchView, searchableInfo);
}
};
이 지연으로 작업하고 있지만 활동이 시작될 때 SearchManager(?)
이 완전히 준비되지 않았 음을 알게되었습니다. 나는 처음 실행하는 동안 db
을 채우는 것과 관련이있을 것이라고 생각합니다. 그것은 오랜 조작 (100 밀리 초 이하)이 아니지만 그럴 수도 있습니다.
어쨌든, 내가 처음으로 활동을 시작할 때 SearchableInfo
이 준비되고 (사용자 관점에서) 제안이 작동하는지 확인하는 방법이 있습니까? 사용
FTS 가상 테이블을 사용하고 있습니까? – Squonk
@ 스퀘크 예 – user2648394