在链接我的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();
}
答案 0 :(得分:0)
正如@Greg在Dropbox网站上告诉我的那样,有一个tutorial来显示一个监听器。因为它可能对其他一些人有用,下面你会发现我最终使用的代码。请注意,您的类确实已经实现了接口 DbxDatastoreManager.ListListener ,以使此代码可以运行。
代码:
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();
}