使用Java线程进行异步调用

时间:2013-07-12 11:58:00

标签: java android

我的应用程序中有两个方法,它们希望一个接一个地执行。

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();
        }
    }

第一个方法完成后如何执行第二个方法(数据完全从数据库中清除)?

2 个答案:

答案 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();
        }