我的应用程序中有两个方法,它们希望一个接一个地执行。
removeAllNonSyncedData();
getFullDbFromREST();
第一种方法是removeAllNonSyncedData()
,它从db中删除所有非同步数据。
清除所有数据后,我想执行getFullDbFromREST()
private void removeAllNonSyncedData() {
try {
ContentResolver cr = getContentResolver();
ContentProviderHelp helper = new ContentProviderHelp();
ObjectPropertyValueTable ObjectPropertyValueTable = new ObjectPropertyValueTable(helper);
ObjectPropertyValueAuditTrailTable ObjectPropertyValueAuditTrailTable = new ObjectPropertyValueAuditTrailTable(helper);
PhotoInfoTable PhotoInfoTable = new PhotoInfoTable(helper);
PropertyDefinitionTable PropertyDefinitionTable = new PropertyDefinitionTable(helper);
SyncManagerTable SyncManagerTable = new SyncManagerTable(helper);
cr.delete(ObjectPropertyValueTable.getContentURI(), ObjectPropertyValueTable.SyncStatus+"<>1", null);
cr.delete(ObjectPropertyValueAuditTrailTable.getContentURI(), null, null);
cr.delete(SyncManagerTable.getContentURI(), null, null);
cr.delete(PhotoInfoTable.getContentURI(), PhotoInfoTable.SyncStatus+"<>1", null);
} catch (Exception e) {
e.printStackTrace();
}
}
第一个方法完成后如何执行第二个方法(数据完全从数据库中清除)?
答案 0 :(得分:3)
嗯,这是默认情况,除非您异步调用第一个方法。否则,方法总是一个接一个地执行。
答案 1 :(得分:0)
我已经使用类似的线程实现了这种条件 我想在完成写入后写一个文件,然后我想读取一个文件,所以我做了两个线程读写,如下面的方式和用户等待和通知功能。
public Object isWrite=new Object();
private class WriteThread extends Thread {
@Override
public void run() {
super.run();
synchronized (isWrite){
//Do something as you want
isWrite.wait();
}
}
}
private class ReadThread extends Thread {
@Override
public void run() {
super.run();
synchronized (isWrite){
//Do something as you want
isWrite.notify();
}
}
}
//Calling of write thread then read thread.
try {
WriteThread mWriteThread=new WriteThread();
mWriteThread.start();
mReadThread = new ReadThread();
mReadThread.start();
} catch (SecurityException e) {
e.printStackTrace();
}