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