Android上的Dropbox-listDatastores未同步

Android上的Dropbox-listDatastores未同步,android,dropbox-api,Android,Dropbox Api,链接我的Dropbox帐户后,我尝试在本地数据库中收集并存储数据存储名称。当我调试我的应用程序时,一切都很好,我也可以找到数据存储中的所有名称。但是,当我在没有调试的情况下运行应用程序时,我的数据库似乎是空的 我觉得同步有问题,有人能给我线索吗?我还没有找到与我的问题对应的解决方案 如果你能帮助我,谢谢你 这是有关守则的一部分: private void gatherData(){ db = new SQliteHelper( this ) ; Set<D

链接我的Dropbox帐户后,我尝试在本地数据库中收集并存储数据存储名称。当我调试我的应用程序时,一切都很好,我也可以找到数据存储中的所有名称。但是,当我在没有调试的情况下运行应用程序时,我的数据库似乎是空的

我觉得同步有问题,有人能给我线索吗?我还没有找到与我的问题对应的解决方案

如果你能帮助我,谢谢你

这是有关守则的一部分:

private void gatherData(){

        db = new SQliteHelper( this ) ;
        Set<DbxDatastoreInfo> datastorePresent = null ;



        try {
            datastorePresent = mDatastoreManager.listDatastores();
        } catch (DbxException e1) {
            e1.printStackTrace();
        }

        Iterator<DbxDatastoreInfo> datastoreLoop = datastorePresent.iterator() ;
        while (datastoreLoop.hasNext()){

            TitleList tit = new TitleList(datastoreLoop.next().id) ;
            tit.setConnectDropbox();
            db.addLists(tit);

        }

        mDatastoreManager.shutDown();

          Intent returnIntent = new Intent();
          boolean syncOK = true ;
          returnIntent.putExtra("result", syncOK) ;
          setResult(RESULT_OK, returnIntent);
          finish();


    }
private void gatherData(){
db=新的SQliteHelper(此);
设置datastorePresent=null;
试一试{
datastorePresent=mDatastoreManager.listDatastores();
}捕获(DbxException e1){
e1.printStackTrace();
}
迭代器datastoreLoop=datastorePresent.Iterator();
while(datastoreLoop.hasNext()){
TitleList tit=新的TitleList(datastoreLoop.next().id);
tit.setConnectDropbox();
db.地址列表(tit);
}
mDatastoreManager.shutDown();
Intent returnIntent=新Intent();
布尔syncOK=true;
returnIntent.putExtra(“结果”,syncOK);
setResult(结果正常,返回意图);
完成();
}

正如@Greg在Dropbox网站上告诉我的那样,有一个用于显示侦听器的窗口。由于它可能对其他人有用,下面您将找到我最终使用的代码。请注意,您的类确实实现了接口DbxDatastoreManager.ListListener,以使此代码可运行

代码:

private void gatherData(){
/**
*打开本地数据库
*在数据存储管理器上设置侦听器,以了解何时同步数据
* 
*/
db=新的SQliteHelper(此);
mDatastoreManager.addListListener(此);
}
/**
* 
*“onDatastoreListChange”在侦听器检测到数据存储同步后启动,
*然后,dropbox服务器上的所有数据存储名称都存储在本地数据库设备中
* 
*@param arg0
*/
@凌驾
公共无效onDatastoreListChange(DbxDatastoreManager arg0){
//TODO自动生成的方法存根
设置datastorePresent=null;
试一试{
datastorePresent=mDatastoreManager.listDatastores();
}捕获(DbxException e1){
e1.printStackTrace();
}
迭代器datastoreLoop=datastorePresent.Iterator();
while(datastoreLoop.hasNext()){
TitleList tit=新的TitleList(datastoreLoop.next().id);
tit.setConnectDropbox();
db.地址列表(tit);
}
Intent returnIntent=新Intent();
布尔syncOK=true;
returnIntent.putExtra(“结果”,syncOK);
setResult(结果正常,返回意图);
完成();
}

这可能与以下内容相同或相似:简而言之,在SDK了解数据存储之前,您可能正在调用listDatastores,因此请在DBDatastoreManager上使用侦听器。@Greg感谢您的帮助!的确,我看过这篇文章,但我不知道如何在Android上向听众讲话。您能给我举个例子吗?这里的教程演示了如何将侦听器添加到DbxDatastoreManager:
private void gatherData(){

        /**
         * Open the local database
         * Set a listener on the datastore manager to know when data are synced
         * 
         */
        db = new SQliteHelper( this ) ;
        mDatastoreManager.addListListener(this);

    }


    /**
     * 
     * "onDatastoreListChange" is launched once the listener detects datastore is synced,
     * Then all datastore names on dropbox server are stored inside of the local database device
     * 
     * @param arg0
     */
    @Override
    public void onDatastoreListChange(DbxDatastoreManager arg0) {

        // TODO Auto-generated method stub
        Set<DbxDatastoreInfo> datastorePresent = null ;
        try {
            datastorePresent = mDatastoreManager.listDatastores();
        } catch (DbxException e1) {
            e1.printStackTrace();
        }


        Iterator<DbxDatastoreInfo> datastoreLoop = datastorePresent.iterator() ;
        while (datastoreLoop.hasNext()){

            TitleList tit = new TitleList(datastoreLoop.next().id) ;
            tit.setConnectDropbox();
            db.addLists(tit);

        }

          Intent returnIntent = new Intent();
          boolean syncOK = true ;
          returnIntent.putExtra("result", syncOK) ;
          setResult(RESULT_OK, returnIntent);
          finish();

    }