Android 搜索建议不';在第一次运行应用程序时无法工作

Android 搜索建议不';在第一次运行应用程序时无法工作,android,searchview,Android,Searchview,我对主要活动中的搜索建议有问题。有时建议不会出现在应用程序的第一次运行时(例如对于新用户),当它重新打开时,一切正常 我发现在第一次运行时,有时不会触发内容提供者查询。原因是searchManager.getSearchableInfo(getComponentName())有时返回null @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我对主要活动中的搜索建议有问题。有时建议不会出现在应用程序的第一次运行时(例如对于新用户),当它重新打开时,一切正常

我发现在第一次运行时,有时不会触发内容提供者查询。原因是
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
将准备就绪,并且(从用户角度来看)建议将起作用?

尝试使用:

SearchableInfo searchableInfo = searchManager.getSearchableInfo(new ComponentName(this, SearchActivity.class);

重要的是将您的
SearchActivity
与从中检索
SearchableInfo

的活动放在同一个包中。您是否使用FTS虚拟表?